【发布时间】:2017-11-30 14:45:08
【问题描述】:
出于好奇,我做了一个实验。我想看看strtolower() 和strtoupper() 之间是否存在细微差别。我预计strtolower() 在大多数小写字符串上会更快,反之亦然。我发现strtolower() 在所有情况下都较慢(尽管在您执行数百万次之前,它的速度完全无关紧要。)这是我的测试。
$string = 'hello world';
$start_time = microtime();
for ($i = 0; $i < 10000000; $i++) {
strtolower($string);
}
$timed = microtime() - $start_time;
echo 'strtolower ' . $string . ' - ' . $timed . '<br>';
对strtolower() 和strtoupper() 重复使用hello world、HELLO WORLD 和Hello World。 Here is the full gist. 我已经多次运行代码并得到大致相同的结果。这是下面的一次测试。
strtolower hello world - 0.043829
strtoupper hello world - 0.04062
strtolower HELLO WORLD - 0.042691
strtoupper HELLO WORLD - 0.015475
strtolower Hello World - 0.033626
strtoupper Hello World - 0.017022
我相信控制这个的 php-src github 中的 C 代码在这里是 strtolower() 和这里是 strtoupper()
需要明确的是,这不会阻止我使用strtolower()。我只是想了解这里发生了什么。
为什么strtolower() 比strtoupper() 慢?
【问题讨论】:
-
为什么标记为 C?
-
@MichaelWalz 因为 PHP 是用 C 编写的?
-
你为什么要浪费时间分配给
$max?你在这两个版本上都浪费时间吗? -
我很好奇为什么人们还要费心去测试这些东西?
-
@TripleDeal 我的意思不是很明显吗?
标签: php c performance micro-optimization