在很多项目中,我看到数据对象/结构以二进制方式写入文件,然后再以二进制方式从文件中取回。
我想知道为什么他们用二进制模式来做?文本模式和二进制模式之间有什么性能差异?如果不是,那么什么时候使用二进制模式或文本模式?
最佳答案
二进制更快。考虑一个以 32 位(4 字节)存储的整数,例如 123456。如果您将其写为二进制(这就是它在计算机中的表示方式),则需要 4 个字节(忽略项目之间的填充以便在结构中对齐) ).
要将数字写为文本,必须将其转换为字符串(一些转换开销和内存存储),然后将其写出,至少需要 6 个字节,因为有 6 个字符要表示号码。这不包括任何额外的填充,例如用于对齐的空格或用于读取/分隔数据的定界符。
现在,如果你认为你有几千个项目,额外的时间会加起来并需要更多的空间,这将需要更长的时间来读入,然后还有额外的时间在你有之后转换回二进制文件进行存储将值读入内存。
文本的优势在于,人们更容易阅读,而不是尝试读取二进制数据或数据的十六进制转储。
关于c++ - 二进制与文本模式下的文件操作——性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11981434/