什么是更快阅读,ASCII或二进制?

And*_*ndy 3 c++ file-io iostream

我目前正在开发一个C++项目,该项目涉及读取数千个小的(~20kb)文本文件,这些文件都是ASCII格式的.

通过在分析之前将所有文件转换为二进制文件,我是否能够获得显着的性能提升?

Han*_*ant 11

将字符串转换为数字虽然在cpu周期中不便宜,但是没有问题.I/O涉及的开销量总是比转换大几个数量级.文件的大小也不是问题,一个磁盘提供大约20KB的8KB,它们都来自同一轨道上的同一个集群.拥有数千个文件是一个问题,打开文件涉及移动磁盘读取器头,这需要永远.

因此,请专注于削减文件数量以获得实际收益.


Omn*_*ity 6

如果您正在处理文本,则"ASCII"和"二进制"之间没有真正的区别.ASCII是将二进制数据解释为文本.所以,如果我正确理解你的问题,答案是否定的,没有可能的转换,也没有性能改进.


Ale*_*ler 5

以二进制格式存储数据有两个优点:

  • 它占用更少的存储空间(更少的磁盘 IO)
  • 读取速度更快(没有耗时的字符串解析)

因此,如果您将文本表示形式转换为紧密压缩的二进制格式,性能将会有所提高,但它们是否重要取决于您的特定情况。

如果数据流已经是一个性能瓶颈,切换到二进制格式(甚至可能压缩-从磁盘读取本质上是慢)可以带来很多。