对比同文件名JPG与WEBP文件体积,优化现有PHP实现脚本
脚本优化方案
原有脚本存在的问题
- 重复调用
glob()扫描目录3次,额外产生不必要的IO开销,文件数量大时性能损耗明显 - 依赖JPG和WEBP文件的扫描返回顺序、数量完全一致,只要存在任意一个无配对的文件,就会出现索引错位,导致对比结果完全错误
- 冗余存储全量文件大小、名称数组,文件数量越多内存占用越高
优化后代码(更短、性能更高、容错性更强)
foreach (glob("*.jpg") as $jpgFile) { $webpFile = pathinfo($jpgFile, PATHINFO_FILENAME) . '.webp'; if (file_exists($webpFile) && filesize($jpgFile) <= filesize($webpFile)) { echo $jpgFile . "<br />"; } }
优化说明
- 仅扫描1次JPG文件目录,减少2/3的目录扫描IO开销,性能提升明显
- 直接通过JPG文件主名匹配对应WEBP文件,完全避免索引错位问题,即便存在无配对的文件也不会影响结果准确性
- 无需额外存储全量数组,仅单次遍历过程中做判断,内存占用极低
- 代码大幅精简,可读性和可维护性更强
内容的提问来源于stack exchange,提问作者Costa
相关产品推荐
相关产品推荐

