> 웹 프론트엔드 > JS 튜토리얼 > Javascript 병렬 연산 구현 code_javascript 기술

Javascript 병렬 연산 구현 code_javascript 기술

WBOY
풀어 주다: 2016-05-16 18:16:01
원래의
919명이 탐색했습니다.

병렬컴퓨팅이 어떻게 프론트엔드 자바스크립트를 지원할지 개인적인 관점에서 추측해보자.

1 있을 법하지 않은 진화

디스플레이 스레드 지원
지원한다면 Javascript의 디스플레이 스레드는 재앙이 될 수 있습니다.
예를 들어 Javascript에서 while(true)를 실행하면 브라우저 인터페이스가 응답하지 않을 수 있습니다. (JavaScript에 절전 기능을 제공하기 위한 Javascript 엔진 컴파일: http://www.cnblogs.com/ioriwellings/archive/2010/08/16/1800416.html) 또한 UI 인터페이스가 차단되는 프로세스를 이해합니다.
, 디스플레이가 스레드를 지원하는 경우 스레드 간 데이터 동기화의 동기화 기본 기능도 지원합니다. 그러면 다음과 같은 문제가 발생합니다.
한 함수에서 잠금을 획득하고 다른 함수에서 잠금이 해제되지만 다른 기능이 잘못되거나 다른 파일에서 다른 기능을 참조하고 어떤 이유(네트워크 문제, 인코딩 문제)로 인해 파일이 로드되지 않으면 교착 상태가 발생합니다.
따라서 일부에 따르면. 위의 이유 중 JavaScript에서 디스플레이 스레드를 지원하는 것은 현실적이지 않습니다.

2 가능한 진화

Invisible 다음 코드는 병렬 연산 FOR 루프를 선언합니다.


#pragma omp 병렬 for
for (i = 0; i < N; i )
 a[i] = 2 * i;


이 방법을 사용하면 이전에 발생한 모든 문제를 Javascript 엔진에서 호스팅할 수 있습니다. 따라서 Javascript 엔진은 내부적으로 openMP 및 Intel TBB를 호출하는 등의 병렬 작업을 처리하고 최적화할 수 있는 공간이 더 많습니다.
그래서 이 접근 방식이 채택될 것으로 추측됩니다. 3 병렬 예외 처리


Javascript 코드는 병렬 스레드 처리에서 암시적으로 호스팅되므로 스레드의 예외 상태를 즉시 얻지 못할 수 있지만 일부 코드에 예외가 있는지는 알 수 없습니다. 모든 스레드의 실행이 완료될 때까지

4 Debugger Evolution

은 스레드 인식을 지원하고 각 스레드의 정보를 분석할 수 있으며 정지/재개할 수 있는 Javascript 디버거를 생성합니다.
물론 Firebug와 유사합니다. Javascript 스크립트로 작성된 디버거도 크게 향상되지만 Visual Studio와 같은 로컬 애플리케이션용 디버거가 주류가 되는 것이 더 이상적이라고 생각합니다. .

5 결론


병렬 컴퓨팅은 Javascript의 실행 성능에 영향을 미칩니다. Javascript로 작성된 많은 프런트 엔드 효과는 Javascript 게임의 성능에 영향을 미칩니다. 하지만 이 변경 사항을 javascript에서 볼 수 있을까요?
정말 기다릴 수 없다면 기존 js 엔진을 컴파일하고 병렬 컴퓨팅 인터페이스를 추가한 다음 자체 브라우저를 게시할 수 있습니다.

단, 현재 JavaScript 사양과 호환되어야 합니다. 그렇지 않으면 다른 브라우저에서 코드를 인식할 수 없으므로 원본 시리얼 코드가 필요합니다. js 엔진 내에서 분석해야 하는데, 정확해야 하고, 최적화를 위해 코드를 병렬 코드로 변환할 수 있어야 합니다. 이 작업은 아직 매우 어려운 작업인 것 같아요.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿