Моя проблема решена И я очень благодарен @GM, он / она рассматривает мою проблему. В моей проблеме большую часть времени, потраченную на fftw_plan_dft_2d
, я увидел документацию FFTW
и понял, что последним вводом этой функции является Planner Flags
:
fftw_plan fftw_plan_dft_2d(int n0, int n1,
fftw_complex *in, fftw_complex *out,
int sign, unsigned flags)
Все процедуры планирования в FFTW принимаютаргумент целочисленных флагов, который является побитовым ИЛИ ('|'), равным нулю или более констант флага, определенных ниже. Эти флаги контролируют строгость (и время) процесса планирования, а также могут накладывать (или снимать) ограничения на тип используемого алгоритма преобразования.
Флаги строгого планирования
FFTW_ESTIMATE
указывает, что вместо реальных измерений различных алгоритмов используется простая эвристика для быстрого выбора (возможно, неоптимального) плана. С этим флагом массивы ввода / вывода не перезаписываются во время планирования.
FFTW_MEASURE
говорит FFTW найти оптимизированный план, фактически вычисляя несколько FFT и измеряя время их выполнения. В зависимости от вашей машины это может занять некоторое время (часто несколько секунд). FFTW_MEASURE - опция планирования по умолчанию.