(我知道有些人已經問JS個人資料問題,但是這不是我所需要的,如果我正確地理解他們。)JavaScript的輪廓在Firefox
我想跟蹤的JavaScript的執行以收集信息1)調用哪個函數,2)函數被調用的時間,3)函數的執行時間。
我想在線收集信息(關於部署代碼),但不是內部收集信息。所以,權衡必須是輕微的。另外,我不想在函數調用的前後手動添加一行。但是,如果有一種方法可以動態地測試代碼,那將是非常好的。
在此先感謝!
(我知道有些人已經問JS個人資料問題,但是這不是我所需要的,如果我正確地理解他們。)JavaScript的輪廓在Firefox
我想跟蹤的JavaScript的執行以收集信息1)調用哪個函數,2)函數被調用的時間,3)函數的執行時間。
我想在線收集信息(關於部署代碼),但不是內部收集信息。所以,權衡必須是輕微的。另外,我不想在函數調用的前後手動添加一行。但是,如果有一種方法可以動態地測試代碼,那將是非常好的。
在此先感謝!
我不認爲有任何系統可以讓JavaScript自動跟蹤函數啓動的時間和函數停止的時間。這可能是你必須添加自己的東西。如果這是你所需要的,你可能要考慮使用PHP來提供你的JavaScript,並使用正則表達式來查找每個函數的開始和結束,用正則表達式或類似的東西。
你的正則表達式可能是這樣的(沒有經過充分測試,所以你不得不嘗試着):
/function [A-Za-z_$][A-Za-z0-9_$]*{(.*?)}/i
一旦你可以訪問功能的裏面,你可以用函數來替換值跟蹤其原始和結束的原始功能定義。
這有利於做你想要的東西,而不必擔心如何修改你的js代碼的功能。這是服務器將完全處理的東西。
如果不是這樣,而不是直接調用函數,使用包裝函數:
function wrapFunction(func, context, argList)
{
// Replace with however you are storing this.
console.log(new Date().getTime());
func.apply(context, argList);
console.log(new Date().getTime());
}
這具有比具有服務器爲您更新JS清潔了很多好處。不幸的是,這也意味着必須手動重寫JS。
我的建議是簡單地調整日誌語法並使用它。大多數記錄器將輸出時間戳,上下文,級別和特定消息。如果您只是在函數的開頭和結尾調用記錄器,它將完全按照您的要求進行操作。此外,由於許多配置都是可配置的,因此您可以將其顯示到Firefox的JS控制檯,將信息發送到服務器,或者如果您選擇了完全禁用。
有JS記錄器的列表,在這裏:
這不幸的是需要手動更新的一切,但它似乎是最簡單的方式來獲得90%的你在找什麼盒子外面。
或許FireBug中的分析器可以幫助您追蹤慢速功能。
Here's a video詳述了分析選項。 (索引:3:20)。
console.profile([title])
//also see
console.trace()
克里斯,感謝您的建議!同時,我剛剛發現了一些非常令人鼓舞的酷代碼。看看這裏:http://gist.github.com/189144 – Paul 2009-10-27 05:41:14