[Ubuntu-zh] 想请教下究竟为什么二进制数据文件使用效率比可读文件高呢?

lee llz916148在yahoo.com.cn
星期一 九月 12 15:36:56 UTC 2011


好吧……

可读文件格式读入确实比二进制要慢,这是由于这其中存在一个转换的问题,我不太会python,不过c++在32位系统下一个long 
int是4字节,写入二进制的时候就直接将内存中的这四个字节写入文件……而写入可读文件格式则还需要将这二进制转换成文本,这样不仅仅浪费了空间(32位最大允许42亿左右的数据,42亿换成可读文件格式,需要10个字节,而二进制用4个字节保存),还降低了效率。因为转换需要时间,我用一个for循环来转换一个int到可读文件格式需要循环10次(每次转换10之后再整除10),不知道要取多少次内存(虽然肯定远远不止,不过估计是10次吧),而写入一个int的二进制值只需要取4次内存……

你只需要想到机器可读格式到human-readable需要转换时间和cpu就可以了

于2011年9月12日 20:39:08,tvdbukrf inuyasha写到:
> 编的一个程序一直都是用别的程序导出的可读文件作为数据文件,最近有人建议我直接把那个程序的数据文件给unpack效率会更高。
> 但为什么高又不甚清楚,Google一番后也没找到什么答案,因此冒昧的在这提问下,虽然跟ubuntu没啥关系就是~~
>
> 比如用python
> 我想如果是可读文件,直接就能拿来用了,比如readline起来挺方便的。
>
> 如果是二进制文件,读取起来确实是比可读文件快,可是似乎没太多办法去操作,最简单的四则运算都觉得挺麻烦,似乎也没啥module?得搞清楚数据结构后再struct.unpack。
> 这样下来难道后者就一定比前者快么?
>
> 声明本人编程水平算是入门中的入门,所以问题弱智了的话请大家见笑:)
> -------------- 下一部分 --------------
> 一个HTML附件被移除...
> URL: <https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20110912/e5157336/attachment.html>





关于邮件列表 ubuntu-zh 的更多信息