我正在做一些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