我有一个python zip应用程序(特别是pdm(。从文件系统运行时,仅显示帮助页面就需要0.300s
左右的时间。然而,对于我的zipapp,它是1s
。ziapp大约有25 MB(它包含了所有的依赖项(。
在未压缩的zip中获取文件应该和读取文件一样快,因为有一个索引可以告诉你在文件中的位置。
编辑:我能够重新设计我的代码,以便能够使用cProfile进行评测。似乎额外的0.6秒是用compile
度过的,但我不确定是什么。
我想明白了——无论出于什么原因,zipimport都不会在zip中的__pycache__
中查找,所以它每次都会重新编译源文件。用相应的pyc
文件替换这些文件可以很好地工作,并将执行速度提高到正常的模块速度。