Вызов собственного кода из производительности управляемого кода - PullRequest
0 голосов
/ 14 мая 2011

Это простой пример.

CodeDLL.cpp Файл:

extern "C" {
    __declspec(dllexport) int __cdecl SimulateGameDLL (int a, int b) {
              return a*b; // Calculation in native code
      }
}

Файл GameSharp.cs:

static class GameSharp
{
    public static class UnsafeNativeMethods
    {
        const string _dllLocation = "CoreDLL.dll";

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

или

static class GameSharp
{
    public static class GameSharpClass
    {       
        public static int SimulateGameDLL(int a, int b) {
             return a*b; //Calculation in managed code
        }
    }
}

Первый: у меня есть файл dll, написанный на нативном коде c ++, и я пытаюсь вызвать в нем функцию в управляемом коде (обертка)Код.Мой код не так прост, как этот. Какой из них лучше Преобразовать собственный код C ++ в управляемый или вызвать его из управляемого кода.Какой из них быстрее?Почему?

Если это не ясно, пожалуйста, скажите мне, что я буду обсуждать это больше. Не голосуйте, чтобы закрыть его, прежде чем сказать мне.:) спасибо

Ответы [ 2 ]

3 голосов
/ 14 мая 2011

Поскольку ваш код не так прост, я бы сказал, что это зависит от того, какой тип кода вы конвертируете в неуправляемый код.Если код связан со сложными числовыми операциями, возможно, неуправляемая версия будет быстрее управляемой, НО я думаю, что вам следует пересмотреть свой ALGORITHM больше, чем то, как код компилируется или оптимизируется компилятором.

2 голосов
/ 14 мая 2011

Я считаю, что когда дело доходит до производительности в .NET, между управляемым и неуправляемым кодом нет заметной разницы.

Я бы преобразовал ваш неуправляемый код в управляемый, если он все равно работает на .NET.

Я просто думаю, что вам не стоит беспокоиться о узких местах производительности на этом уровне. Если вы занимаетесь разработкой игр, вам следует беспокоиться о производительности, когда дело доходит до сетей и графики (используйте шейдеры).

EDIT:

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

"Максимальная скорость выполнения. Управляемый уровень добавляет программе около 10% накладных расходов." (для Windows Mobile)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...