You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中$i++和++$i是否存在性能差异?

PHP for循环中$i++和++$i的性能差异说明与验证方案

性能差异结论

  • 日常业务开发完全不用纠结二者的差异:PHP7及以上版本开启OPcache后,两种写法的底层执行逻辑完全一致,没有任何可感知的性能差别。
  • 只有在非常老的PHP5版本且关闭优化的场景下,++$i才会有微乎其微的速度优势:因为后置自增$i++需要先暂存原始值再返回,多了一步无意义的操作,但这个差异只有循环千万次以上才能测出来,正常业务根本碰不到这种场景。

性能验证方法

你不需要去找编译文件,直接写简单的基准测试代码就能直观看到耗时差别,参考代码如下:

<?php
// 测试$i++耗时
$start = microtime(true);
$loopTimes = 10000000;
for ($i = 0; $i < $loopTimes; $i++) {
    // 加一行简单操作避免空循环被PHP优化掉,导致测试不准
    $tmp = $i;
}
echo '$i++ 耗时:' . number_format(microtime(true) - $start, 4) . '秒' . PHP_EOL;

// 测试++$i耗时
$start = microtime(true);
for ($i = 0; $i < $loopTimes; ++$i) {
    $tmp = $i;
}
echo '++$i 耗时:' . number_format(microtime(true) - $start, 4) . '秒' . PHP_EOL;

测试的时候注意几个点,结果会更准确:

  • 用和生产环境一样的PHP版本、OPcache配置测试
  • 循环次数建议设为1000万次以上,否则差异太小体现不出来
  • 多跑几次取平均,避免服务器其他进程占用资源导致结果波动

如果确实想看底层执行的指令差异,可以装vld扩展,打印两段代码生成的opcode直接对比即可。

内容的提问来源于stack exchange,提问作者Akkua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 02:54:09