問題

我的macOS音訊應用程式使用for迴圈新增兩個浮點陣列.當size巨大時,有沒有更有效的方法?

 int size = 5;
float array1[size] = {0.0, 0.1, 0.2, 0.3, 0.4};
float array2[size] = {0.5, 0.6, 0.7, 0.8, 0.9};
float sum[size];

for (int i = 0; i < size; i ++)
{
    sum[i] = array1[i] + array2[i];
}
 

  最佳答案

對於macOS(如評論中所澄清的那樣),解決方案很容易,至少對於單個新增操作.在程式碼中插入#include <Accelerate/Accelerate.h>,向專案新增加速框架,並將迴圈更改為單個呼叫vDSP_vadd(sum, 1, array1, 1, array2, 1, size);.這使用Apple為其支援的每個平臺定製的高效能向量化例程.

(1引數是在元素單元中透過陣列取得的進展.1意味著處理每個元素,並且是效能的最佳例子)

由於您正在使用多達 524,288 個元素,您還應考慮應用程式如何與快取記憶體互動。

  相同標籤的其他問題

cperformanceaudio