使用zlib解压缩函数而不是解压缩会有性能下降吗?
我之所以这样问是因为我使用的python应用程序使用zlib解压缩文件。在过去的几个月里,所有的文件都正常工作,但是,有一种类型的文件超过了服务器内存限制,导致解压缩功能失败。基于doc,我可以切换到解压函数,它可以工作在块上,并且可以处理大文件。问题是,我对解压缩函数有更多的用法,我正在考虑将它们全部转换为解压缩函数。这样可以吗?还是会使代码变慢?
发布于 2019-05-10 11:36:01
首先,在实践中,premature optimization is the root of all evil.只在效率太低的情况下才对某些东西进行优化,并且您确定了资源占用率(例如,使用分析),而且效果足够大,值得付出努力并增加复杂性(=额外的维护负担)。
zlib.decompress和zlib.decompressobj.decompress实现都在zlibmodule.c中,与之对应的是zlib_decompress_impl和zlib_Decompress_decompress_impl。
它们不共享代码,但它们的代码与预期的大致相同,并委托给相同的zlib C库函数。
所以,哪一种使用原始的减压方法没有什么区别。
带有额外逻辑和重复的Python调用的decompressobj可能会有一个很小的开销--但是如果数据很大,解压缩时间就会使它相形见绌。
decompress替换decompressobj是否值得(或是否会产生任何影响)将取决于内存、处理器或I/O是否是每个特定情况下的瓶颈(内存为正效应,处理器为负效应,I/O为零)。(因此,请到第一段寻求指导。)https://stackoverflow.com/questions/56073882
复制相似问题