首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从托管代码性能中调用本机代码

从托管代码性能中调用本机代码
EN

Stack Overflow用户
提问于 2011-05-14 23:30:36
回答 2查看 657关注 0票数 0

这是一个简单的示例。

CodeDLL.cpp文件:

代码语言:javascript
运行
复制
extern "C" {
    __declspec(dllexport) int __cdecl SimulateGameDLL (int a, int b) {
              return a*b; // Calculation in native code
      }
}

GameSharp.cs文件:

代码语言:javascript
运行
复制
static class GameSharp
{
    public static class UnsafeNativeMethods
    {
        const string _dllLocation = "CoreDLL.dll";

        [DllImport(_dllLocation)]
        public static extern int SimulateGameDLL(int a, int b);
    }
}

代码语言:javascript
运行
复制
static class GameSharp
{
    public static class GameSharpClass
    {       
        public static int SimulateGameDLL(int a, int b) {
             return a*b; //Calculation in managed code
        }
    }
}

第一个:我有一个用c++原生代码编写的dll文件,我尝试在托管代码中调用其中的函数。

在第二个示例中,我将其转换为托管代码。我的代码不像this.Which那么简单,最好将我的c++本机代码转换为托管代码或将其称为表单托管代码。哪一个更快?为什么?

如果这一点不清楚,请告诉我我会更多地讨论它。在告诉我之前,不要投票关闭它。:)谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-15 00:03:26

我相信当涉及到.NET的性能时,托管代码和非托管代码之间没有明显的区别。

如果您的非托管代码都运行在.NET上,我会将其转换为托管代码。

我只是认为你不应该担心这个级别的性能瓶颈。如果你在做游戏开发,你应该担心网络和图形的性能(使用着色器)。

编辑:

http://msdn.microsoft.com/en-us/library/bb677124.aspx

“最大执行速度。托管层给程序增加了大约10%的开销。”(适用于windows mobile)

票数 2
EN

Stack Overflow用户

发布于 2011-05-15 00:11:46

由于您的代码不是那么简单,我会告诉您这取决于您要转换为非托管代码的代码类型。如果代码必须与复杂的数字运算有关,那么非托管版本可能会比托管版本更快,但我认为您应该更多地检查您的算法,而不是编译器如何编译或优化代码。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6002813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档