我正在开发一个金融应用程序,将数据存储在一个文件中。我注意到文本文件i/o相当慢。如果我切换到二进制格式,它会快多少?2倍?10倍?我可以编写自己的计时测试,但我希望其他人已经这样做了。提前谢谢。
发布于 2010-08-14 10:37:01
谢谢你的想法,但由于我正在寻找数字,我决定运行我自己的测试。
以下是我的结果:
emulator droid
integer text 5.478 0.028
integer binary 0.112 0.002
double text 6.546 0.187
double binary 0.117 0.003
integer text/bin 49 14
double text/bin 56 62最上面的四行是以秒为单位写入100个数字的时间。比率在最后两行。所以答案是,与文本相比,编写二进制代码的速度要快14到62倍。我没有测试读取性能。
对我来说,这既是好消息,也是坏消息。好是因为我可以大大提高i/o速度,坏是因为处理二进制文件是一件痛苦的事情。
发布于 2010-08-13 20:49:03
瓶颈是将数据移入/移出磁盘。无论是文本还是二进制都不是真正的问题;您需要做的是最小化数据量。
如果您的数据由许多数值组成,您可能会看到一些显著的节省。例如,数字1234567890是10个字节的文本,但可以放入一个4字节的二进制整数中。但是,请注意,值1只是一个字节的文本,但在二进制int中仍然需要四个字节。
您可能还需要考虑在文本和二进制之间进行转换所花费的时间。读取和写入整数和双精度数组的“原始”数组将比转换文本更快,但您需要担心字节顺序、不同平台/编译器的大小差异、结构填充等问题。
因此,您需要查看应用程序的数据,以确定它在二进制编码中是否会小得多,以及在不同格式之间转换数据时涉及哪些问题。
另一个大问题是在进行随机访问时固定大小的记录与可变大小的记录。如果记录的大小是固定的,那么很容易转到文件中的第N条记录。如果它们的大小是可变的,那么在读取记录N之前,您可能必须读取和解析记录1到N-1。
发布于 2010-08-13 20:44:40
文件I/O总是比在RAM中做事情慢得多。因此,除非二进制文件的大小小于存储相同数据的文本文件,否则使用二进制文件格式不会有任何帮助。实际的加速效果将取决于您的自定义二进制格式有多小。
https://stackoverflow.com/questions/3476855
复制相似问题