【发布时间】:2011-12-25 09:23:15
【问题描述】:
我有一些需要大量二进制操作的 C# 代码,因此我编写了一个非托管 C++ 方法来替换其中一个 C# 方法。令我震惊的是,它慢了 10 倍。我运行了一个配置文件,发现缓慢来自调用外部方法的开销,而不是方法本身。
所以我想如果我用托管 C++ 编写方法,我会减少调用的开销,但仍然有 C++ 的速度。首先,这个假设是否成立?
这是我的非托管 C++ 代码:
#include "stdafx.h";
unsigned __int32 _stdcall LSB_i32(unsigned __int32 x)
{
DWORD result;
_BitScanForward(&result, x);
return (unsigned __int32)result;
}
这是我的 C# 代码:
public static partial class Binary
{
[DllImport(@"CPP.dll")]
public static extern int LSB_i32(int value);
}
我在这里做错了吗?
如何将上述内容转换为托管 C++?我对此进行了一些浏览,但是由于我对托管 C++ 不熟悉,所以我没有走多远。
【问题讨论】:
标签: c++ .net visual-studio unmanaged managed