Я переписываю высокопроизводительное приложение C++ на C#. Приложение C# заметно медленнее оригинала C++. Профилирование сообщает мне, что приложение C# тратит большую часть времени на доступ к элементам массива. Поэтому я создаю простой тест доступа к массиву. Я получаю совершенно другие результаты, чем другие, проводящие подобное сравнение.
Я переписываю высокопроизводительное приложение C++ на C#. Приложение C# заметно медленнее оригинала C++. Профилирование сообщает мне, что приложение C# тратит большую часть времени на доступ к элементам массива. Поэтому я создаю простой тест доступа к массиву. Я получаю совершенно другие результаты, чем другие, проводящие подобное сравнение.
Код C++:
[code]#include [*] #include #include #include
using namespace std; using namespace std::chrono;
int main(void) { high_resolution_clock::time_point t1 = high_resolution_clock::now();
int xRepLen = 100 * 1000; int xRepCount = 1000;
unsigned short * xArray = new unsigned short[xRepLen]; for (int xIdx = 0; xIdx < xRepLen; xIdx++) xArray[xIdx] = xIdx % USHRT_MAX;
int * xResults = new int[xRepLen];
for (int xRepIdx = 0; xRepIdx < xRepCount; xRepIdx++) {
// in each repetition, find the first value, that surpasses xArray[xIdx] + 25 - i.e. we will perform 25 searches for (int xIdx = 0; xIdx < xRepLen; xIdx++) { unsigned short xValToBreach = (xArray[xIdx] + 25) % USHRT_MAX; xResults[xIdx] = 0;