SO
Serdar Ozturk

C#/C++ Если я DLL написанную на C++ подключаю в C# то библиотека работает со скоростью нативного кода или нет?



Я пытаюсь ускорить выполнение функции занеся её в C++ DLL но как то это все вместе работает с одинаковой скоростью

Большие ли потери на вызов функции через Dll в данном случае?

Функция проста XOR
extern "C" _declspec(dllexport) void AddXor512C (bool* a, bool* b, bool* c)
{
for (int i = 0; i < 64; i++)
c[i] = (a[i] ^ b[i]);
}
Но вызывается тысяч 500

private byte[] AddXor512(byte[] a, byte[] b)
{
byte[] c = new byte[64];
for (int i = 0; i < 64; i++)
c[i] = (byte)(a[i] ^ b[i]);

return c;
}

последняя на C#

АМ
Алексей Молчанов

Да, код С++ вызывается напрямую, а вот взаимодействие между либой C# и С++ идет через специальный буфер, который производительность немного снижает.

Смотреть P/Invoke (что вы использовали) , COM и unsafe.

P.S. Хорошим тоном считается передача размера массива в функцию, что повышает возможности ее повторного использования.

extern "C" _declspec(dllexport) void AddXor512C (bool* a, bool* b, size_t count, bool* c) {
for (size_t i = 0; i < count; ++i)
c[i] = (a[i] ^ b[i]);
}

Похожие вопросы
Вопрос про DLL-библиотеки в Delphi.
dll программирование c++. кто-нибудь вообще знает dll библиотеки у с++? нужна помощь громаднейшая
Как криптонуть dll библиотеку?
Декомпиляция dll библиотеки написанной на c++ (как это сделать)
C++ DLL
как написать код чтобы программа подключалась к интернету?
Какие библиотеки нужны, чтобы работать с аудио в C\C++?
Исходники C# Дайте какой-нибудь сайт с исходниками и dll библиотеками C#.
C# Если я использую код внутри unsafe он по скорости работы сравним с нативный (неуправляемым) кодом?
C#/C++ простой код библиотеки Си++ подключаю в Си шарп (внутри)