2011-03-09 3 views
2

내가 만든 JavaScript 함수에 대한 테스트와 최적화를하고 있습니다. 파이어 폭스 (FireUnit)에서 사용하는 애드온이 프로파일 링 시간 동안 완료된 콜 횟수를 반환한다는 것을 알았습니다. 이 스크립트의 HTTP 호출 수입니까?JavaScript '통화'란 무엇이며 효율성과 어떤 관련이 있습니까?

또한 양호한 범위 내에서 몇 개의 통화가 고려되는지에 대해 설명하거나 토론하거나 등급을 매기거나 설명 할 수 있습니까? 어쩌면 예를 들어 드롭 다운 메뉴, 이미지 숨기기/표시, 이미지 슬라이드 쇼 기능 등과 같은 일반적으로 사용되는 JavaScript 기능을 제공 할 수 있습니다.

호출은 '작업'의 척도를 나타내거나 단순히 반복 수행됩니까?

+0

나는 전화가 함수 호출을 의미한다고 생각합니다. 특정 함수가 호출 된 시간. – Raynos

답변

6

이 컨텍스트에서 호출은 함수가 호출 된 횟수입니다.

function foo() { 

}; 

foo(); 
foo(); 

함수

foo를 호출 한/상기 예에서 회 을 호출.

"좋은 통화 범위 란 무엇인가"에 대한 대답이 없습니다. jQuery과 같은 함수는 대부분 페이지 당 많은 횟수로 호출되지만, init()과 같은 함수는 한 번만 호출됩니다.

함수의 효율성을보다 잘 나타내려면 실행 시간이 더 좋습니다. 함수가 실행되는 데 걸리는 시간을 기록합니다 (거의 항상 밀리 초 단위로 기록됩니다). 실행 시간이 긴 함수는 실행 시간을 줄이고 프로그램의 효율성을 높이기 위해 최적화 할 수 있습니다.

시간을 가장 많이 사용하려면 두 통계 (호출 횟수 및 실행 시간)를 결합하고 많은 시간 호출되고 더 긴 실행 시간을 갖는 함수를 최적화 할 수 있습니다.

+0

얼마나 많은 질문이 좋은 것으로 간주되는지에 대한 그의 하위 질문은 무엇입니까? 함수 자체에 의존한다고 생각합니다. 통화는 한 기능의 실행을 얼마나 향상 시켰는지를 알려줍니다 ... 전화가 극도로 낮아지기 전까지는 아무런 의미가 없습니다. –

+0

호출 자체가 실제 '비용'을 나타 냅니까? 또는, 호출되는 함수에 따라 다릅니 까? –

+0

@Eric : "호출 자체가 실제 '비용'을 나타 냅니까?"- 음, 함수를 호출하면 해당 함수의 모든 코드가 실행됩니다. 그 코드 중 일부가 실행될 필요가 없다면 불필요한 작업이 수행되고 있다는 점에서 "비용"입니다. –

3

주어진 수의 함수가 실행되거나 호출되거나 실행 된 횟수를 의미합니다. 통화 횟수에는 좋은 범위가 없습니다. 이 숫자는 두 가지 가장 중요한 정보를 제공합니다.

첫 번째로 일부 함수는 한 번만 호출되고 다른 함수는 100 번 호출 된 경우 후자의 모든 최적화는 이전보다 100 배 중요합니다. 종종 한 번만 호출되는 함수를 최적화하는 데 시간 낭비가 종종 발생하지만 함수가 여러 번 호출되는 경우 너무 느리지 않은지 확인하는 것이 중요 할 수 있습니다.

함수 호출 수에서 두 번째로 볼 수있는 것은 실제로 함수가 항상 동일한 결과를 가져올 수있는 함수가 수백 번 호출되는 경우 호출 할 때 루프 내부에서 호출한다는 것을 의미 할 수 있습니다 한 번 변수에 값을 저장하는 것으로 충분할 수 있습니다. 이 한 번만 부를 것이다 동안

for (i = 0; i < 1000; i++) { 
    array[i] = i + expensiveFunction(); 
} 

:

value = expensiveFunction(); 
for (i = 0; i < 1000; i++) { 
    array[i] = i + value; 
} 

당신의 기능 중 일부는 많은 시간이 될 수라는 것을보고

예를 들어 이것은 expensiveFunction 1000 번 호출 것 그 예제와 비슷한 코드를 가지고 있다는 힌트. 물론 매번 값을 캐시 할 수는 없지만 때때로 함수 호출의 수를 알고 있으면 유용 할 수 있습니다.

관련 문제