Что можно сделать, чтобы ускорить вызов собственных методов из управляемого кода?
Я пишу программу, которая должна иметь возможность управлять списками объектов произвольного размера и извлекать из них информацию на высокой скорости., который он подает в сценарии.Скрипты - это биты скомпилированного кода C #.Я пишу базовый интерфейсный уровень из C ++ (нативной) DLL / SO / и т. Д. В уровень управления C # (.Net или Mono).
Теперь я провел некоторое тестирование, и я 'мы обнаружили, что в среднем PInvoking собственного метода из управляемого кода примерно в 100 раз медленнее, чем все это в управляемом (для справки все нативное и все управляемое одинаково быстро.)is:
[DllImport("test.dll")]
extern static public String test_method(String value);
String returnedValue = test_method("hello world");
Есть ли способ кешировать указатель на функцию, некоторый код быстрого вызова, который увеличит скорость после загрузки нативной библиотеки?Это решит проблему довольно аккуратно, поэтому я сомневаюсь, что она существует.: P
Редактировать: Я не указал, но это должно работать на Windows, Linux (по крайней мере, Ubuntu) и Mac OS X, все для x86 и x64.В противном случае я бы использовал интерфейс C ++ / CLI и покончил с этим, но если это не работает для всех 3 платформ, я не могу его использовать.