2009-08-16 6 views
0

내 큰 JavaScript 애플리케이션은 이제 4 초마다 35,000 번의 함수 호출을 수행하고 있습니다. 성능은 여전히 ​​괜찮습니다 (1.6ghz Atom에서). 그러나 브라우저가 작동을 멈추는 지점이 있습니까?실용적인 JavaScript 함수 호출 제한

+1

관심있는 중 ...이 앱이하는 일은 거의 10,000 개의 함수 호출이 필요합니다. – scunliffe

답변

4

항상 제한된 시스템에 대한 제한이 있습니다.

여기에 변수가 너무 많아서 실제로 그 기능이 실제로 수행되는 것만 큼 중요한 것은 아닙니다. ~ 10K 통화를 필요로한다면 이것이 좋은 일은 아닐 것입니다 -이 행동 중 일부를 리팩터링하거나 다른 [서버 측] 레이어로 푸시한다고 생각해도 좋습니다. 이 워크로드를 더 잘 처리 할 수 ​​있을까요?

0

대부분의 브라우저가 작동을 멈추고 (단일 스레드 응용 프로그램처럼 동작 함) 실행 시간이 오래 걸리면 (실행 시간이 브라우저에 따라 다릅니다) 실행중인 스크립트를 강제 종료 할 수있는 옵션이 표시됩니다. 문제가 될 수 있습니다.

등의 옵션 중 하나를 선택하면 브라우저에 대한 제어를 주기적으로 해제하는 것이 좋습니다 (자세한 내용을 알지 못합니다). 예 :

 
function do_everything() { 
    foo(); // takes a while 
    bar(); // also takes a while 

이 숨을 쉴 수있는 브라우저 시간을 제공하지만, 보편적 인 해결책이 아니다

 
function do_everything() { 
    foo(); 
    setTimeout(bar, 10); // delay 10ms 
} 

로 변환 할 수 없습니다. 예를 들어, do_everything()은 bar를 완료하기 전에 리턴합니다 (적어도 10ms 후에 발생합니다). javascript에는 'sleep'또는 'yield'기능이 없기 때문에 바쁜 루프가 없으면 중간 중간 기능을 중지 할 수 없습니다 (브라우저 잠금).

관련 문제