2011-03-09 81 views
2

我正在做一些測試和優化我所做的JavaScript函數。我注意到我在Firefox(FireUnit)中使用的插件給出了在分析時間內完成的調用數量的返回值。這是腳本所做的http調用的數量嗎?什麼是JavaScript調用?它與效率有什麼關係?

此外,您還可以勾勒出/討論/等級/作爲一個良好的範圍內,多少次來電認爲解釋一下嗎?也許通過給出的例子或常用的JavaScript功能,如下拉菜單,隱藏/顯示圖像,圖像幻燈片功能等...

一個調用是否代表'工作'的任何措施或只是執行的迭代?

+0

我認爲通話意味着函數調用。一個特定的函數被調用了多少次。 – Raynos 2011-03-09 18:39:25

回答

6

在這種情況下,調用是一個函數被調用的次數。在上述例子中

function foo() { 

}; 

foo(); 
foo(); 

函數foo已被調用/調用兩次

有對「什麼是呼叫的良好範圍」沒有回答。像jQuery這樣的函數很可能會在每個頁面被調用很多次,而您期望像init()這樣的函數只能被調用一次。

你的函數的效率得到更好的代表是他們的執行時間;這會記錄該函數執行所花費的時間(幾乎總是以毫秒記錄)。執行時間較長的功能可以進行優化,以縮短執行時間並提高程序的效率。

爲了更好地花你的時間,你可以將二者結合起來的統計數據(調用次數和執行時間),並期待在優化被稱爲很多次的功能,並具有較長的執行時間。

+0

他有多少問題被認爲是好的問題是什麼?我想這取決於功能本身。通話只會告訴你多少改進了一個功能的執行......在它們數量變得非常低之前,幾乎沒有任何意義。 – 2011-03-09 18:43:27

+0

呼叫本身是否代表任何真實的「成本」?或者,它取決於被調用的函數嗎? – 2011-03-09 18:43:46

+0

@Eric:「這個調用本身是否代表任何真正的'成本'?」 - 當你調用一個函數時,它的所有代碼都會運行。如果某些代碼不需要運行,那麼這是一個「成本」,因爲不必要的工作正在完成。 – 2011-03-09 18:46:04

3

呼叫的數量意味着給定函數多少次運行或調用或執行。通話次數沒有很好的範圍。這個號碼給你兩個最重要的信息:

首先,如果某些函數被調用一次和其他一些函數被調用100次,然後在後面的每一個優化是100倍,比前更重要。通常只需要優化一次函數就浪費時間,但如果函數被調用了很多次,那麼查看它是否不太慢可能很重要。

你可以從函數調用的次數看到的第二件事是,如果某個函數被調用了幾百次,但實際上它總是具有相同的結果,那麼這可能意味着調用它時在一個循環內調用它一次並將值存儲在變量中可能就足夠了。

例如,這將調用expensiveFunction 1000次:

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

雖然這只是一次調用它:

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

眼看你的一些函數被調用了很多次可能暗示你有一些類似於這個例子的代碼。當然,你不能每次都緩存這個值,但有時候你會這麼做,並且知道函數調用的次數是有用的。

相關問題