回答
所以我做了一个随机ISH大压缩文件:
$ ls -l *zip
-rw-r--r-- 1 aleax 5000 115749854 Nov 18 19:16 large.zip
$ unzip -l large.zip | wc
23396 93633 2254735
即116 MB与它23.4K的文件,并定时事情:
$ time unzip -d /tmp large.zip >/dev/null
real 0m14.702s
user 0m2.586s
sys 0m5.408s
这是系统提供的命令行解压缩二进制文件 - 毫无疑问,它可以像纯C的可执行文件一样进行精细调整和优化。然后,(清理/ tmp目录后; - )...:
$ time py26 -c'from zipfile import ZipFile; z=ZipFile("large.zip"); z.extractall("/tmp")'
real 0m13.274s
user 0m5.059s
sys 0m5.166s
...这是用Python标准库 - 多一点苛刻的CPU时间,但超过10%的速度实,即是,已经过去的时间。
欢迎您重复这样的测量(在您的特定平台上 - 如果CPU很差,例如一个慢速ARM芯片,那么Python对CPU时间的额外要求可能最终导致速度变慢)特定的zip文件,因为每个大的zip文件会有非常不同的组合,很可能是性能)。但是这对我而言意味着没有太多的空间来构建Python扩展,比旧版本zipfile
快得多 - 因为使用它的Python击败纯C,包含系统的解压缩!)
感谢您的分析,这是最有帮助的。 – Duck 2009-11-19 05:12:46
@Duck,不客气! – 2009-11-19 05:36:40
也很高兴看到内存使用量测量。无论如何。 – 2009-11-19 09:56:15
For处理大文件而不加载到内存中,请在Python 2.6的zipfile
版本中使用新的基于流的方法,如ZipFile.open
。 不要使用extract
或extractall
除非你有强烈的消毒ZIP中的文件名。
(你曾经有read
所有字节到内存中,或在其周围砍像zipstream;这是现在已经过时)
- 1. 什么是最好的方式来处理多个文件
- 2. LLVM的最大好处是什么?
- 3. 什么是.NET的最好的文字处理组件
- 4. 什么是一个好的PHP库来处理文件上传?
- 5. 什么是最好的方式来处理DBNull的
- 6. 最好的做法来处理大plists?
- 7. 什么是最好的Python库模块框架代码?
- 8. 什么是最好的C++替代python字典和zip?
- 9. Ruby的等价于Python的多处理模块是什么?
- 10. 处理彼此使用模块的最佳方式是什么?
- 11. zip文件模块错误:文件不是一个zip文件
- 12. 最好的方式来处理改变python类的'模式'
- 13. Python:处理模块
- 14. 块选择模式有什么好处?
- 15. 在线程模块中使用python中的Eventlet模块有什么好处?
- 16. 循环并处理大型(10GB +)文本文件的最佳方法是什么?
- 17. 什么是最好的facebook python-sdk fork?
- 18. 什么是处理symfony2中编辑css文件的好方法
- 19. 什么是最好的方法来存储PDF文件?
- 20. 什么是最好的方法来生成xml文件
- 21. 如何处理zip文件?
- 22. 什么是最好的方式来处理与流星的NPM包1.4
- 23. 在mysql中使用INDEXES最大的好处是什么?
- 24. iPhone中的图像处理 - 什么是最好的?
- 25. 什么是EMACS中最好的在文件模式下查找?
- 26. 无法使用ZipInputStream处理zip文件中的大文件
- 27. 最好的方式来读取和处理大于0.5GB的数据文件C
- 28. 什么是最好的Drupal调查模块
- 29. 什么是在C#中的文件处理的最佳做法?
- 30. 什么是在UI中处理大量排列的好方法?
你比较zip文件到使用拉链的性能/直接在解压贝壳? – 2009-11-19 00:57:53