我正在尝试确定COM互操作是否正在成为我软件的瓶颈。 MSDN上的这篇文章有助于http://msdn.microsoft.com/en-us/library/ms998579.aspx#scalenetchapt15_topic11。但是,对于编组#的“正常”或“高”值,我确实没有参考点来确定它是否会影响性能。任何人都可以给我这个性能计数器的门槛,就像MSDN在文章中给出的其他性能计数器一样。我知道这是一个硬件和应用程序特定的问题,但任何帮助将不胜感激。
答案 0 :(得分:1)
我认为没有可能指出编组的特定阈值。它取决于应用程序。你应该做的是衡量平均每次通话的持续时间。编写一个测试应用程序,它只是对非托管代码进行大量调用并对其进行计时。然后在应用程序上使用“Chattiness”计数器,您应该能够估计托管代码和非托管代码之间的切换总成本。
几年前我不得不做这件事。我使用非托管DLL从一大块数据中读取值。我测量了这些调用并发现由于调用次数很多,所以它相对昂贵,所以我做了一次调用来检索数据块,然后从托管代码中的数据中提取值。编码工作量更大,但速度提升幅度相当大。