我正在使用Equatec分析器來診斷我的應用程序的緩慢過程。我想出了哪種方法很慢,但我想知道該方法的哪一部分很慢。除了將方法分解爲多種方法外,還有一種方法可以通過Eqatec Profiler API來標記要與整個方法分開分析的方法的特定部分?是否可以通過其API調用Eqatec Profiler的一部分方法?
回答
Equatec是一個很好的分析器,但根據我的經驗,這是在一個大尺寸的.net應用程序中發生的情況。
你可能會發現一個活動很好的例程,比如20%,你甚至可能會在裏面找到一個特別的「熱」線,但是你可以看看它並且不知道該怎麼做它,因爲據你所知,這是必要的。
與此同時,可能有比代碼中潛伏的東西更大的東西,它在剖析器中並不能很好地顯示出來,因爲它並不侷限於一個例程。
如果我只舉一個例子,我已經看到一個應用程序花費大約50%的啓動時間在調用堆棧中的20-30個層次從資源獲取字符串,以便它可以將它們顯示給用戶讓他們知道需要這麼長時間。如果它找到了另一種方式來做到這一點,它會啓動兩倍的速度!螞蟻探查器(另一個很好的)給出沒有線索至於發生了什麼。
我是如何找到它的?舊的方法,相同的方式it's done here,並且是explained here。
下圖所示,如果手動採樣棧N次,通過暫停程序,對那些你看它做什麼樣的你可以用一些替代更快,時間的量即可期望保存,並且相應的加速比。例如,紅色曲線(2/5)意味着如果你拿了五個堆棧樣本,並且你看到了其中兩個可以改進的東西,那麼你不知道你將節省多少錢。然而,最有可能的值是2/5(40%,加速67%),平均值是3/7(43%,加速75%),並且它的範圍大概在10%之間(加速11% )和70%(加速3.33倍)。如果你認爲你不能相信少量的樣品,那就是這種情況。 不是一個糟糕的賭博。 如果您想要更多的確定性,請採取更多樣本。
(的Beta distributionX ~ Be(number of hits + 1, number of misses + 1)
和提速= 1 /(1-X)圖解。)由於當前版本3.8.14:沒有,這是不可能的。這將是一個美妙的改進,但它不在EQATEC的直接路線圖上。
- 1. 是否可以通過API調用分發iOS應用程序
- 2. 是否可以通過單擊字符串的一部分來調用函數?
- 3. 是否可以通過反射調用「Select」方法
- 4. 是否可以通過異步管道調用類方法
- 5. 是否可以在回調方法中使用reset()API方法?
- 6. 是否可以通過Controller方法以編程方式調用Razor Compiler?
- 7. 使用EQATEC Profiler剖析ASP.NET網站
- 8. 是否可以通過編程方式通過API過濾Skype通知?
- 9. gdb python api:是否可以調用類/結構體方法
- 10. 是否可以調用這個通用方法?
- 11. 是否可以通過網絡讀取mp4的特定部分?
- 12. 外部類可以調用其內部類的方法嗎?
- 13. 是否可以從util調用postgres內部方法?
- 14. 是否可以攔截Documentum API調用?
- 15. 是否可以從Java調用COM API?
- 16. 可以通過第二種方法調用方法的屬性
- 17. 是否有可能通過靜態方法OCMock類調用?
- 18. 檢查,看是否可以調用來自API的方法調用前
- 19. 是否可以從.NET中的動態方法調用內部方法?
- 20. 在Ruby中是否可以繞過singleton方法調用?
- 21. 是否可以通過方法定義類作用域對象?
- 22. 是否有任何我可以通過編程調用的Eclipse重構API?
- 23. 是否可以通過--ff-only更改進行部分合並?
- 24. 是否可以通過Web Service API使用Odoo清單?
- 25. 是否有可能通過方法名
- 26. 是否可以通過servlet調用doGet()靜態方法來避免同步?
- 27. 如何安全地測試是否可以通過NSInvocation調用方法
- 28. 是否可以通過ASPX頁面在方法後面調用Silverlight代碼?
- 29. 是否可以通過反射調用私有屬性或方法
- 30. Sharekit完成共享時,是否可以通過ShareItem調用方法?
EQATEC Profiler會檢測到您的「啓動時間20-30層深」示例:它總是向您顯示罪魁禍首,即總共佔用大部分時間的方法,並且不會因昂貴的方法被從許多其他方法調用。我認爲這是一個非常強大的功能。 – 2012-03-19 00:16:08
@Richard:如果您還記得,我無法運行EQATEC,但我可以運行ANTS。也許ANTS只是EQATEC的影子,我不知道,但它的工作原理與測量方法百分比的原理相同。那就是問題所在。有很多方法,叫或不叫,高百分比。你看着他們,他們都看起來非常好。直到你把測量放在一邊,而不是及時地檢查一些深層樣本,並問「爲什麼這一刻被花費了?」。問題出現。測量不會給出原因,沒有它們,問題就不會出現。 – 2012-03-19 02:14:58
我認爲螞蟻是一個很好的分析器,但它顯然可以被你的例子欺騙。 EQATEC分析工作者不是隻考慮調用樹和百分比,而是考慮每種方法的總數,因此佔用大部分時間的人將「冒泡」到犯罪嫌疑人名單的首位。 (順便提一下,你的問題當時是由簽署的程序集引起的 - 如果你重新簽署或跳過這些程序,那麼它應該可以工作) – 2012-03-19 07:22:49