일부 JavaScript 프로그램의 속도 테스트는 Date 객체를 만들고 함수의 실제 작업 전후의 시간을 밀리 초 단위로 가져 오는 방법으로 수행합니다. 시체를 루프에 추가하는 간단한 방법을 만들었고 마지막으로 새 ms에서 이전 ms를 뺀 다음 인쇄합니다. 그러나 모든 것은 0 밀리 세컨드로 끝납니다. 필자가 쓰기로 확인하는 시간이 작업 전후에 동일하기 때문에 의미가 있습니다. 내가 제대로하고 있으며 자바 스크립트 (Chrome에서)가 번개처럼 빠르게 진행되고 있거나 내 변수를 엉망으로 만든 장면 뒤에 있습니다.JavaScript의 타이밍
답변
Date 객체가 밀리 초 단위로 시간을 반환하지만 실제로는 그 뒤에있는 타이머의 해상도가 아닙니다. 예를 들어, 타이머는 매 10ms마다 한 번 틱 할 수 있습니다. 프로세스에 3ms 밖에 걸리지 않으면 대부분의 시간 동안 0이 아닌 측정치가 표시되지 않습니다 (때로는 10ms가 표시됩니다).
해결책은 여러 번 기능을 실행하고 전체 시간을 정하는 것입니다. 예를 들어 백만 번 실행하고 총 시간을 1000000으로 나눠 평균 실행 시간을 구하십시오.
정말 코드를 볼 필요가 있습니다. 루프가 비동기 적으로 실행되고 있다는 이유는 인터프리터가 다음 명령을 건너 뛰기 전에 루프의 끝까지 기다리지 않기 때문입니다. 물론 루프가 번개처럼 빠르다.
자세히 알아 보려면 JavaScript 프로파일 러를 사용하는 것이 좋습니다. Firefox 용 Firebug에는 좋은 내용이 있습니다. 콘솔을 열고 프로필을 누르기 만하면됩니다.
파이어 버그는 좋은 조언입니다. +1 –
일부 간단한 벤치 마크 비교를 구현하는 방법은 answer to this question을 참조하십시오. @Greg Hewgill이 지적했듯이 특정 테스트가 실제로 테스트하는 기간을 정확하게 표시하려면 테스트를 여러 번 실행하는 것이 중요합니다.
일반적으로, 그것은 같은 간단한 귀결 : 당신은 아마 몇 가지 코드를 게시해야합니다
var MAX = 100000, i = 0,
s = null, e = null;
console.info("`someMethodToTest()` over %d iterations", MAX);
s = new Date();
do {
someMethodToTest();
} while (++i < MAX);
e = new Date();
console.log("Total: %dms; average: %dms", +e - +s, (+e - +s)/MAX);
- 1. 이벤트를 사용한 CUDA 응용 프로그램 타이밍 타이밍
- 2. 타이밍? - 코코아
- 3. 프로세스 타이밍
- 4. javascript의 file_Get_contents
- 5. JavaScript의 버그
- 6. JavaScript의 정수
- 7. javascript의 array.select()
- 8. JavaScript의 preg_match?
- 9. JavaScript의 SecureRandom?
- 10. 자바 스크립트 타이밍 문제
- 11. ASP.Net 페이지의 글로벌 타이밍
- 12. KeyListener 및 타이밍
- 13. JQuery 스크립트로드 타이밍
- 14. VB6 응용 프로그램 타이밍
- 15. 루비/레일의 타이밍 코드
- 16. 시프트 타이밍 계산 문제
- 17. 밀리 초 타이밍 C++
- 18. 타이밍 출시 지점
- 19. ERLANG - 타이밍 어플리케이션
- 20. 제어 루프의 시뮬레이션 타이밍
- 21. 이벤트 타이밍 asp
- 22. 스테퍼 모터 제어 타이밍
- 23. ASP.NET의 타이밍 문제
- 24. PyGTK 커스텀 타이밍
- 25. jQuery AJAX 타이밍 문제
- 26. 섀도우 박스 타이밍 문제
- 27. 타이밍 학습 Drools
- 28. jQuery에서 타이밍/대기
- 29. CruiseControl.net 중복 NAnt 타이밍
- 30. Silverlight에서 wcf 호출 타이밍
, 그것은 그렇지 않으면 잘못 무슨 말을하는 것은 불가능하다 - 무슨 일을하는 것은 원칙적으로 – laura
그것의 올바른 보인다 참조하고있는 코드를 실제로 게시하는 경우 잘못된 작업을 수행하면 쉽게 볼 수 있습니다. – stpe