2011-09-05 125 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。