【发布时间】:2013-01-01 21:45:43
【问题描述】:
我有“巨大”的数据量,可能在 50 到 100 兆字节之间变化。 我使用 filestreamer 将这些数据作为字节数组读取。
问题是,我想将所有连续的 2 个字节转换为整数。 我这样做的方法是循环遍历字节数组,步长为 2,然后使用 BitConvert 进行转换:
_data[i] = BitConverter.ToInt16(soundData[i : i + 2], 0) // Convert 2 bytes into an int and store at i
所以每两个字节都会变成一个 Int16。 但问题是这太慢了,对于大约 50 兆字节的文件,这可能需要 20 秒!
是否有一种通用的方法可以立即执行此操作,而不是在我的数据数组的每 2 个字节上调用此函数,这样它就不会那么慢?最好以“安全”的方式,所以没有不安全的代码。
【问题讨论】:
-
“快”? “单核细胞增多症”? mono-project.com/Interop_with_Native_Libraries
-
stream 的全部意义在于在加载数据的同时对其进行处理,而不是先加载数据然后对其进行迭代。转换真的是瓶颈吗?你能在你的问题中加入循环吗?