2016-11-18 2 views
2

현재 저는 논문을 쓰고 있습니다. 이 글에서는 코드 최적화에 대해 이야기 할 것입니다. 필자의 예에서는 자바 스크립트에서 별개의 두 배열을 사용할 것이다. ES5 필터와 중첩 된 for 루프를 비교합니다.자바 스크립트 코드를 벤치 마크하는 학문적으로 올바른 방법은 무엇입니까?

jsPerf.com을 사용한 내 테스트는 예상대로 진행되었습니다. ES5 필터는 중첩 된 for 루프보다 89-90 % 느립니다. performance.now() (타이머 시작, 코드 실행, 타이머 중지 및 소요 시간 계산)을 사용하면 비슷한 결과를 얻을 수 있습니다.

이 모두는 벤치마킹 코드에 적합합니다. 정말로, 그들은 그렇습니다. 그러나, 그들은 학구적으로 정확하지 않습니다. 첫 번째 테스트가 완료된 직후에 100 % CPU 집약적 벤치 마크를 실행하면 어떻게됩니까? 테스트 2의 결과는 "유효하지 않습니다".

두 가지 JavaScript 코드를 벤치마킹하는 가장 좋은 방법은 무엇입니까?

+0

https://mathiasbynens.be/notes/javascript-benchmarking – robertklep

+0

@robertklep 그러나 나는 "이 코드를 백만 번 실행하고 평균 시간이 걸렸습니다."라고 말하면 모든 것을 염두에 둡니다. 그 일에 부딪 칠 것입니다. 그것은 올바른 방법이 아닙니다. 100 % CPU 사용량에서 벤치 마크를 실행하면 결과가 달라집니다. – MortenMoulder

+0

@MortenMoulder 결과는 브라우저마다 다를 수 있습니다. 다른 버전의 브라우저에서도 마찬가지입니다. 즉, _now_의 결과가 몇 개월 만에 완전히 다를 수 있음을 의미합니다. 타당성에 대한 귀하의 요구 사항은 무엇입니까? – vlaz

답변

0

답변을 찾았습니다. Google 크롬의 Profiler을 사용하여 내 기능의 CPU 시간을 확보 할 수있었습니다.

실제 시간 대신 CPU 시간을 실제로 사용하므로 프로파일 러를 사용하는 것이 가장 좋은 방법입니다. 내 CPU가 테스트 중 하나에서 100 % 실행 되더라도 결과에 영향을 미치지 않아야합니다.

관련 문제