【发布时间】:2009-03-06 14:32:46
【问题描述】:
我想尽快从float[] 获得byte[],而不是循环遍历整个数组(可能通过演员表)。不安全的代码很好。谢谢!
我正在寻找一个比浮点数组长 4 倍的字节数组(字节数组的维度将是浮点数组的 4 倍,因为每个浮点数由 4 个字节组成)。我会将其传递给 BinaryWriter。
编辑:
对于那些尖叫“过早优化”的批评者:
在优化之前,我已经使用 ANTS 分析器对此进行了基准测试。由于文件具有直写缓存,并且浮点数组的大小与磁盘上的扇区大小完全匹配,因此速度显着提高。二进制编写器包装使用pinvoke'd win32 API 创建的文件句柄。进行优化是因为这减少了函数调用的数量。
而且,在内存方面,此应用程序会创建大量缓存,这些缓存会占用大量内存。我可以分配一次字节缓冲区并多次重复使用它——在这个特定实例中的双倍内存使用相当于应用程序整体内存消耗的舍入误差。
所以我想这里的教训是不要做出过早的假设;)
【问题讨论】:
-
你真正想要什么?每个浮点数都转换为一个字节,还是一个包含浮点数的字节表示的四倍长的数组?
-
“长四倍”是什么意思?
-
将浮点数数组转换为字节数组?所以 2 个浮点数需要 8 个字节?还是我误解了。
-
这将有助于了解您打算在 for 之后使用什么字节。如果您愿意使用不安全的代码,那么 yopu 接受的答案在某些情况下并不是最优的......
-
他在问题中说...“我会将其传递给 BinaryWriter”。