我正在做一些Wave文件處理,並讓它們從磁盤讀取到一個字節數組中。我想快速從這個字節數組複製部分到另一個緩衝區中進行中間處理。目前我使用這樣的事:什麼是複製我的陣列的最快方法?
float[] fin;
byte[] buf;
//fill buf code omitted
for(int i=offset; i < size; i++){
fin[i-offset] = (float) buf[i];
}
我覺得這是一個緩慢的方法,因爲有儘可能多的計算在持續了循環條件和增量,因爲超過在實際的身體。如果在C#中有可用的塊拷貝或者其他方式可以實現塊拷貝,那就太好了。
也許它不是太慢,但它確實看起來像移動一些數據很多工作。這裏的「大小」在2^10和2^14之間。然後我將「fin」移交給FFT庫,所以這絕不是代碼中最慢的部分,也許我正在吠叫錯誤的樹。我認識到微型優化並不是人們應該花費時間的地方,而且我認識到分析是一種更好的方式來實現整體加速,但是我知道這段代碼處於「熱門路徑」,並且必須在不同的最終用戶架構下在不到三分之一秒的時間內完成,以最大限度地減少我們的硬件系統要求。即使我知道下面的FFT代碼會花費更多的時間,但我正在尋找可以獲得它們的加速。
Array.Copy肯定看起來不錯,我以前不知道,我認爲這個Q &已經成功了!
是的在MS.NET框架下,我不認爲我們應該戳一下浮動:) – Karl 2009-02-20 00:11:18