【发布时间】:2010-12-07 13:49:27
【问题描述】:
我在我的项目中重写了从 C# 到非托管 C++ 的数字运算两页代码,经过全面优化后,速度提高了 3 倍。我想继续优化该代码,但现在我选择的分析器 dotTrace 无法做到,因为它只查看托管代码。
当 P/Invoked C++ 模块在 C# 应用程序中运行时,如何对其进行概要分析?
还有一个切题的问题:
通过 P/Invoke 调用以下函数不会产生任何不必要的开销(例如复制数组),对吧?只是确保。 (请注意,Foo 既从 bar 读取并写入它)
// From the C# side:
[DllImport("foo.dll")]
static extern void Foo(float[,] bar);
// From the C++ side:
extern "C" __declspec(dllexport)
void Foo(float* bar);
编译器:Vista 上的 msvc
【问题讨论】:
-
float[,] / float*真的对吗?float[] / float*或float[,] / float**的相关性不是更好吗? -
没有。了解 float[,] 和 float[][] 之间的区别。
-
我不知道,我不使用 C#。我会把它添加到我不知道的语言列表中:)
标签: c# c++ optimization pinvoke visual-c++