2011-09-05 121 views
8

我有一個C#(.NET 4.0)WinForm應用程序不斷與基於Linux的應用程序進行通信,每秒接收一些數據。當我看到'clr.sll!StrongNameSignatureVerification'正在爲此應用程序消耗大量CPU時,我一直在微調此WinForm應用程序,以減少它的高CPU使用率。我使用Process Explorer來查找。一些谷歌搜索告訴我'clr.sll!StrongNameSignatureVerification'正在踢,因爲CLR試圖驗證這是否是一個強命名的程序集(我不希望CLR)。clr.sll!StrongNameSignatureVerification CPU消耗

經過我對此的進一步研究,我試圖從Microsoft SDK的sn.exe跳過此WinForm應用程序的簽名驗證。我得到一個錯誤,說這不是一個強命名的程序集。 我並不感到驚訝,因爲我沒有簽署這個應用程序,或者不記得設置任何應該調用CLR來驗證此應用程序的簽名。

我在.net應用程序安全性方面的經驗幾乎爲零,所以目前我正在尋找這方面的一些幫助。任何指針都會有幫助。

在此先感謝。

+0

你用什麼來分析你的應用程序? – Iridium

+0

來自RedGate的ANTS Profiler – silverspoon

+1

我想你需要添加一些更多的細節 - 例如一個完整的調用堆棧,顯示正在調用此StrongNameSignatureVerification函數的位置。此外,被調用的函數有多少次?很顯然,如果需要說2秒鐘來調用這個方法,但它只發生一次,它可能會在你的分析器中顯示爲熱點,但從長遠來看不會顯着影響性能。 (當然,如果它被稱爲每秒數百次,那是另一回事)。 – Iridium

回答

2

看偏移後clr.sll!StrongNameSignatureVerification,如果它比幾千字節時,這可能意味着符號不是在Process Explorer中加載,並且問題可能是任何其他方法CLR。 DLL。