JavaScript 성능 향상을 위한 Thread-level Speculation (TLS)
Source
Evernote/Papers/Using Speculation to Enhance JavaScript Performance in Web Applications.md
Summary
순차적 실행으로 멀티코어 활용이 어려운 JavaScript의 성능 문제를 해결하기 위해 Thread-level Speculation(TLS) 기법을 적용한 연구입니다. WebKit 브라우저의 Squirrelfish 엔진에 TLS를 구현하여 JavaScript 함수 호출을 예측적으로 병렬 처리했습니다. 소스 코드 수정 없이 15 가지 웹 애플리케이션을 8 코어 환경에서 테스트한 결과, 상당한 속도 향상을 확인했습니다.
Key Points
JavaScript 의 순차적 실행 한계로 인한 멀티코어 활용도 부족 문제 제기
Thread-level Speculation(TLS) 을 통해 함수 호출을 예측하여 병렬 처리 가능하게 함
WebKit 의 Squirrelfish 엔진에 TLS 구현 적용
소스 코드 변경 없이 8 코어 환경에서 15 개 웹 앱 테스트 시 유의미한 속도 향상 확인
JavaScript 기반 분산 컴퓨팅 고려사항
Java 채팅 서버 구현 시 쓰레드 동기화 및 성능 이슈 토론 (2002)
ML 기반 번들링: JavaScript 툴링의 미래
웹의 병목 현상: JavaScript
Scala + Play Framework 2 Server 성능 향상 시키기
List.js: HTML 리스트의 검색, 정렬, 필터링을 위한 경량 JavaScript 라이브러리
Web Workers: JavaScript 멀티스레딩
브라우저 앙상블을 활용한 분산 컴퓨팅 (WeevilScout)
비동기적 JavaScript
TensorTrade SAC 에이전트 디버깅 및 거래 로직 개선
Distributed Electronic Rights in JavaScript
북마클릿(Bookmarklet) 정의
HTTP Archive: jQuery 호스팅 및 버전 분산 분석 (2013)
JavaScript 의 현대적 활용 분야 (2019)
클라이언트 유틸리티 시간 계산 로직 검토
Design Patterns in JavaScript (tcorral)
HTML에서 Javascript와 CSS 기반으로 애니메이션을 구현하는 방법
s 목표)
JavaScript Promises: 개념, 용어 및 표준화
웹의 불안전한 JavaScript 사용 관행에 대한 측정 연구
JavaScript this 키워드 동작 원리
JavaScript 과잉 조직화 (Over-Organizing) 의 적절성
2017 년 JavaScript 테스트 개요 (Powtoon Engineering)
풀스택 JavaScript 프레임워크 학습 조언 (Quora)
JavaScript 엔진의 동작 원리 (V8 기준)
CSRF)
Web Framework Benchmark Inspired
더글라스 크록포드의 작업 철학 및 JavaScript 관점
JSWhiz: JavaScript 메모리 누수 정적 분석 도구
웹 기반 연산 오프로딩 및 상태 시리얼라이제이션 연구 동향
JavaScript 패키지 매니저의 간략한 역사 (npm, Yarn, pnpm)
Web Workers API 개요 및 기본 사용법
requestAnimationFrame 사용법
Prototype용 선택 상자 플러그인
CSS :scope 가상 클래스의 용도 및 동작 방식
대규모 JavaScript 애플리케이션 설계 및 엔지니어 성장
자바스크립트에서의 Continuation-passing style (CPS) 소개
8bit.js: Web Audio API 기반 8비트 사운드 라이브러리
Requirify: 브라우저 콘솔에서 동적 라이브러리 로딩
CSS를 이용한 클라이언트 측 전체 텍스트 검색
종성 분리 알고리즘
Web Animations API: element.animate() (Chrome 36)
HTML5 Canvas 실시간 드로잉 성능 최적화 가이드
grunt-usemin을 사용한 프론트엔드 자산 패키징
리눅스 환경 HLS 스트리밍 참조 링크 모음
jQuery 이벤트 핸들링: .on() 사용 권장
자바스크립트 객체 더하기 연산의 타입 변환 규칙
Freemarker 템플릿 상속을 통한 레이아웃 관리
awesome-javascript (스크랩 실패)
Distributed Web Worker 개발 중 Promise 및 이벤트 처리 이슈
VueJS 프로젝트에 Prettier + ES6 Lint 적용
자바스크립트 동작 원리: 엔진, 런타임, 호출 스택
자바스크립트 프로토타입(Prototype) 개념 정리
자바스크립트 메모리 관리 및 4가지 흔한 메모리 누수 대처법
Android ListView 커스터마이징 및 성능 최적화
Simple Ajax 예제
Sitespeed.io를 사용한 웹사이트 성능 테스트
Three.js 시작 가이드 (Aerotwist)
자바스크립트 디자인 패턴 - 프록시(Proxy)
CSS 최신 동향 파악을 위한 Adobe Web Platform 블로그
Play Framework 개요
Immutable Caching 을 통한 웹 성능 최적화
텍스트 교체하기: 5가지 방법 (Swapping Out Text, Five Different Ways)
자바스크립트 아키텍처 v0.4
proxyquire: Node.js require 의존성 오버라이드 라이브러리
Resource Timing API 를 통한 네트워크 성능 측정
대시보드 장착 Nexus 7 및 KITT 테마 커스텀 런처
웹 브라우저 동작 원리 (2) - 레이아웃 리플로우 최적화
AJAX 기본 원리 및 XMLHttpRequest 구현
HTTP 클라이언트 라이브러리의 리다이렉트 지원 방식 제안
임베디드 웹 서버: 제한된 리소스에서의 효율적 포맷팅
JavaScript 학습 자료 (2013)
D3.js를 활용한 한국 지도 시각화 가이드
2011년 3분기 웹 성능 최적화 핵심 링크 및 동향
자바스크립트 배열 메소드 5가지 (indexOf, filter, forEach, map, reduce)
Bower: 웹 프론트엔드 패키지 관리자
PayPal 의 Node.js 전환 사례 요약
PC 게임 실행 가능 여부 확인 방법
TLS Forward Secrecy Deployments
하둡(Hadoop) 성능 향상을 위한 컬럼 기반 파일 포맷 경쟁 (ORC vs Parquet)
GitHub의 jQuery 제거 사례
넷플릭스 성능 케이스스터디 (NHN FE.JS Wiki #184)
프로그래밍 실력 향상을 위한 8 가지 추천 프로젝트
2017년 주목할 만한 Java 라이브러리 목록
브라우저 동작의 이해 - 리플로우와 리페인트 및 그 최적화
Chromecast 에서 Game Boy 에뮬레이터 실행 방법 (개념 증명)
Hiding Native HTML5 Video Controls in Full-Screen Mode
Objective-C 함수 포인터와 코드 블럭
The “When Can I Use” Web Widget
HTML5 게임 오프라인 지원 가이드
DevTools Continuous Painting Mode를 활용한 페인팅 성능 프로파일링
Thinking in React (리액트스럽게 생각하기)
ECMAScript 6 Generator 개요 및 Node.js 활용
Didact: 리액트 원리 학습을 위한 DIY 가이드 시리즈 소개
Git remote-tracking branch 개념 및 동작 원리
React vs Vue 비교 (2019 Edition, React Hooks 기준)
GPU 동작 원리 및 아키텍처 개요
파이썬 urllib를 이용한 웹 소스 출력 스크립트
imgix 성능 개선 및 문제 원인 분석 (2017)
FAST CLOUD: 클라우드 스토리지 지연 성능 개선을 위한 코딩 기법
jQuery 애플리케이션 아키텍처 도구 (Addy Osmani)
실시간 투표 애플리케이션 구축 (Node.js, Express, AngularJS, MongoDB)
harp.js: 전처리 기능을 갖춘 정적 웹서버
HTTPS 개요 및 TLS 핸드셰이크 프로토콜