将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

回到顶部