Я вызываю часть неуправляемого кода C ++ из моего приложения C #
рассчитать быстрое преобразование Фурье сигнала с дискретным временем.
Я звоню примерно так
IntPtr ptr = ComputeFFTW(packetSig, packetSig.Length, (int)samplFrequency,(int)fftPoints);
unsafe
{
double *dPtr = (double*)ptr;
for(int l = 0; l < fftData.Length; l++)
{
fftData[l] = dPtr[l];
}
}
Хотя этот фрагмент кода работает нормально и дает мне желаемые результаты, я вижу, что во время вычисления происходит своего рода снижение производительности (утечка памяти). CLR не может вернуть локальные (двойные) переменные, и мое приложение значительно сожирает объем оперативной памяти.
Может кто-нибудь из вас подсказать, где я мог бы сделать это неправильно.
Со своей стороны, я запустил свое приложение, используя ANTS Mem Profiler, и я могу видеть на снимке, что двойные объекты требуют почти 150 МБ пространства памяти. Это нормальное поведение ??
Class Name Live Size (bytes) Live Instances
Double[] 150,994,980 3
В этом отношении приветствуется любая помощь.
Шриватс