2011-02-09 6 views
2

변수 선언과 같은 매우 기본적인 것들에 대해 속도 테스트를하고 싶습니다.js 변수 선언 속도 테스트

이제 더 중요한 시간 차이를 갖기 위해 X 번 실행하는 함수가 있습니다.

  1. 인가 : 나는이 개 질문이 지금

    var doit = 10000000, 
        i = 0, 
        i2 = 0; 
    
    //testing var with comma 
    console.time('timer');  
    function test(){ 
        var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z; 
    }; 
    while (i<=doit){ 
        test();  
        i++; 
    }; 
    console.timeEnd('timer'); 
    
    //testing individual var declarations 
    console.time('timer2'); 
    function test2(){ 
        var a; var b; var c; var d; var e; var f; var g; var h; var i; var j; var k; var l; var m; var n; var o; var p; var q; var r; var s; var t; var u; var v; var w; var x; var y; var z; 
    }; 
    while (i2<=doit){ 
        test(); 
        i2++; 
    }; 
    console.timeEnd('timer2'); 
    

    :

    http://jsfiddle.net/eTbsv/이 코드입니다

    (당신은 당신의 콘솔 & 그것을 실행하는 데 몇 초 정도 걸립니다를 열 필요) 이것은 변수 선언의 속도를 테스트하는 정확한 방법일까요?

  2. 어떻게 파이어 폭스를 충돌시키지 않고 더 많은 사이클을 테스트 할 수 있습니까? 예를 들어 doit을 1000000000으로 설정하면 firefox가 스크립트를 중지하려고합니다.
  3. 매번 내 스크립트와 jspref의 결과가 너무 다른 이유는 무엇입니까? 언젠가 개별 변수 선언은 그룹화 한 후 빠른 :/

편집 방금 ​​만든 JS 현의 테스트 케이스 : 다른 브라우저 및 구성과 함께 당신의 일부가 참여할 수 있다면 http://jsperf.com/testing-js-variable-declaration-speed 좋을 것입니다. 그러나 나는 여전히 그것을 테스트하는 방법이 정확한지 알고 싶다.

+3

http://jsperf.com을 방문한 적이 있습니까? – lonesomeday

+0

아니요이 링크에 +1하지 않습니다. – meo

답변

2

이 방법은 변수 선언의 속도를 테스트하는 정확한 방법입니까?

대략적인 아이디어는 충분하지만 완벽하지는 않습니다. 대부분의 경우와 마찬가지로, CPU를 사용합니다. 바이러스 스캐너와 같은 다른 응용 프로그램이나 피싱 검사와 같은 브라우저의 다른 작업으로 인해 CPU가 급증하면 JavaScript 실행 속도가 느려질 수 있습니다. CPU가 유휴 상태 일 때도 정확한 과학이 아니며 좋은 평균을 얻으려면 여러 번 실행해야합니다.

어떻게 파이어 폭스를 충돌시키지 않고도 더 많은 사이클을 테스트 할 수 있습니까? 예를 들어 doit를 1000000000으로 설정하면 firefox가 스크립트를 중지하려고합니다.

Firefox는 JavaScript 실행을 최대 10 초로 제한합니다. 주변에 일이 있는지 확실하지 않습니다.

내 스크립트와 내 jspref의 결과가 매번 다른 이유는 무엇입니까? 때때로 개별 변수 선언이 더 빨리 그룹화됩니다./

두 변수 사이에 실제 차이가 없기 때문일 수 있습니다.모든 변수 선언은 "호이스트 (hoisted)"이며, 이는 최적화로서 런타임 대신 파싱 타임에 수행 될 가능성이 높습니다. 따라서 파싱 된 함수의 내부 표현은 동일합니다. 유일한 차이점은 정의되지 않은 변수를 초기화하고 빈 함수를 실행하는 데 걸리는 시간에 영향을주는 미묘한 요소입니다.

+0

그런 사양을 가져 주셔서 감사합니다. – meo

0

2 사용자 입력에 대한 루프를 중단하는 것이 응답하지 않는 스크립트 대화 상자를 쉽게 중지시킬 수있는 유일한 방법입니다.

반복마다 n 개의 경고를 표시하십시오 (이 기간 동안 타이머를 중지하십시오).

당신은 스파이더 맨 키 등에서이 작업을 고려 했습니까? 아니면 브라우저 구현에 특별히 관심이 있습니까?

+0

나는 단지 변수화 선언을 그룹화하는 것이 더 빠를뿐만 아니라 더 빠르다는 것을 내 wokring 친구에게 proove하려고한다. – meo