如何统计PHP程序的运行时间、耗费内存
封面图
•
2025-11-26
•
PHP
212
0
0
0
在 PHP 中,你可以使用内置的函数来统计程序的运行时间以及内存使用情况。以下是一些常用的方法: --- ## 一、统计运行时间 ### 方法 1:使用 `microtime()` 函数 ```php <?php // 获取开始时间 $startTime = microtime(true); // 这里是你需要测试的代码 for ($i = 0; $i < 100000; $i++) { // 做一些计算 } // 获取结束时间 $endTime = microtime(true); // 计算运行时间(秒) $executionTime = $endTime - $startTime; echo "程序运行时间: " . $executionTime . " 秒"; ?> ``` > `microtime(true)` 返回的是当前时间的浮点数,精确到微秒。 --- ### 方法 2:使用 `gettimeofday()`(旧方法,不推荐) ```php <?php $timeStart = gettimeofday(); // ... 你的代码 ... $timeEnd = gettimeofday(); $executionTime = ($timeEnd['sec'] - $timeStart['sec']) + ($timeEnd['usec'] - $timeStart['usec']) / 1000000; echo "程序运行时间: " . $executionTime . " 秒"; ?> ``` > 推荐使用 `microtime()`,因为更简洁、准确。 --- ## 二、统计内存使用情况 ### 方法 1:使用 `memory_get_usage()` 函数 ```php <?php // 获取初始内存使用量 $startMemory = memory_get_usage(); // 这里是你需要测试的代码 $largeArray = range(1, 100000); // 获取当前内存使用量 $endMemory = memory_get_usage(); // 计算内存消耗(单位:字节) $memoryUsed = $endMemory - $startMemory; echo "程序内存消耗: " . $memoryUsed . " 字节 (" . round($memoryUsed / 1024, 2) . " KB)"; ?> ``` ### 方法 2:使用 `memory_get_peak_usage()` 获取峰值内存使用量 ```php <?php // 获取初始内存使用量 $startMemory = memory_get_usage(); // 这里是你需要测试的代码 $largeArray = range(1, 100000); // 获取峰值内存使用量 $peakMemory = memory_get_peak_usage(); echo "程序峰值内存消耗: " . $peakMemory . " 字节 (" . round($peakMemory / 1024, 2) . " KB)"; ?> ``` --- ## 三、完整示例(同时统计运行时间和内存) ```php <?php // 开始时间 $startTime = microtime(true); // 开始内存 $startMemory = memory_get_usage(); // 你的代码 $largeArray = range(1, 100000); for ($i = 0; $i < 100000; $i++) { $largeArray[] = $i; } // 结束时间 $endTime = microtime(true); // 结束内存 $endMemory = memory_get_usage(); // 峰值内存 $peakMemory = memory_get_peak_usage(); // 计算运行时间 $executionTime = $endTime - $startTime; // 计算内存消耗 $memoryUsed = $endMemory - $startMemory; echo "程序运行时间: " . round($executionTime, 4) . " 秒\n"; echo "程序内存消耗: " . round($memoryUsed / 1024, 2) . " KB\n"; echo "程序峰值内存: " . round($peakMemory / 1024, 2) . " KB\n"; ?> ``` --- ## 四、注意事项 - `memory_get_usage()` 返回的是当前使用的内存量。 - `memory_get_peak_usage()` 返回的是程序运行过程中占用的最大内存。 - 如果你使用了缓存、对象池等,可能会影响内存统计结果。 --- 如需更详细的性能分析,可以考虑使用 **Xdebug** 或 **Blackfire** 等工具进行更深入的性能剖析。
上一篇:
php怎么接受Postman发送的 raw数据?
下一篇:
PHP输出 ISO 8601格式的时间,以及时间和时区的概念
标题录入,一次不能超过6条
留言
评论