将float []转换为byte []的最快方法是什么?
我想获得一个byte[]
从float[]
尽可能快地,不通过整个数组循环(通过铸造,可能)。不安全的代码是可以的。谢谢!
我正在寻找一个比float数组长4倍的字节数组(字节数组的维数将是float数组的4倍,因为每个float都由4个字节组成)。我将其传递给BinaryWriter。
:向那些批评者尖叫“过早的优化”:在优化之前,我已经使用ANTS探查器对此进行了基准测试。由于文件具有直写式高速缓存,并且float数组的大小恰好与磁盘上的扇区大小匹配,因此速度有了显着提高。二进制编写器包装使用pinvoke
‘d
win32 API 创建的文件句柄。之所以进行优化,是因为这减少了函数调用的次数。
而且,关于内存,此应用程序会创建使用大量内存的海量缓存。我可以分配一次字节缓冲区,然后重复使用多次-
在此特定实例中,双倍的内存使用量等于应用程序总体内存消耗中的舍入误差。
所以我想这里的教训是不要做过早的假设;)
回答:
如果您不希望发生任何转换,建议使用Buffer.BlockCopy()。
public static void BlockCopy( Array src,
int srcOffset,
Array dst,
int dstOffset,
int count
)
例如:
float[] floatArray = new float[1000];byte[] byteArray = new byte[floatArray.Length * 4];
Buffer.BlockCopy(floatArray, 0, byteArray, 0, byteArray.Length);
以上是 将float []转换为byte []的最快方法是什么? 的全部内容, 来源链接: utcz.com/qa/429961.html