从c#调用c ++ / cx函数的开销有时会急剧增加

时间:2013-10-02 11:53:17

标签: c# interop c++-cx overhead

我注意到我的应用程序中出现了一些行为,我无法理解为什么会这样。

我有一个C#方法(让我们称之为methodC#),我经常打电话。在这个方法的主体中,只有一个指令是对c ++ / cx方法的调用(让我们称之为methodCx)。

methodCx的平均执行时间小于1毫秒。 methodC#的平均执行时间是3ms。

这意味着从C#调用methodCx的平均开销约为3ms。

有时候,当我的应用程序负载很高时(由于在其他线程上完成计算),这个开销甚至可以跳到80ms。我不明白为什么会这样。我知道由于负载,代码执行可能会减慢,但似乎只从c#调用cx方法已经大幅增加。非c# - > cx调用似乎没有受到影响(至少没那么大)。有人可以解释这种行为。至少可能暗示在哪里寻找罪魁祸首。

提前致谢

EDIT1 methodCx将3个单独的浮点数作为参数。它返回Cx对象。

EDIT2 我使用秒表在C#中进行计时,使用性能计数器在c ++ / cx中进行计时。结果是一样的。 methodCx的执行时间是几百微秒,而methodC#的执行时间在其他线程的高负载期间可以达到甚至100ms。

0 个答案:

没有答案