gpt4 book ai didi

PHP 字符串与 boolean 速度测试

转载 作者:可可西里 更新时间:2023-11-01 00:38:45 25 4
gpt4 key购买 nike

我正在尝试优化 PHP 应用程序中的特定函数,并愚蠢地假设“if”语句中的 boolean 查找比字符串比较更快。但是为了检查它,我使用 microtime 进行了一个简短的测试(见下文)。 .令我惊讶的是,字符串查找速度更快。

我的测试有什么问题吗(我喝了太多咖啡,所以我怀疑我自己的代码)?如果没有,我会对人们对 PHP 中的字符串与 boolean 查找的任何评论感兴趣。

第一次测试( boolean 查找)的结果是 0.168 秒。

第二次测试(字符串查找)的结果是 0.005 秒。

<?php
$how_many = 1000000;
$counter1 = 0;
$counter2 = 0;

$abc = array('boolean_lookup'=>TRUE, 'string_lookup'=>'something_else');

$start = microtime();
for ($i = 0; $i < $how_many; $i++)
{
if ($abc['boolean_lookup'])
{
$counter1++;
}
}

echo ($start - microtime());

echo '<hr>';

$start = microtime();
for ($i = 0; $i < $how_many; $i++)
{
if ($abc['string_lookup'] == 'something_else')
{
$counter2++;
}
}

echo ($start - microtime());

最佳答案

是的,你的咖啡喝多了。您需要使用 microtime(true) 否则您的日期计算以毫秒为单位,但完全忽略秒。此外,使用当前时间 - 开始时间来测量持续时间,而不是开始时间 - 当前时间,否则你得到一个消极的时间。请尝试使用以下代码:

<?php

$how_many = 5000000;
$counter1 = 0;
$counter2 = 0;

$abc = array('boolean_lookup'=>TRUE, 'string_lookup'=>'something_else');

$start = microtime(true);
for($i = 0; $i < $how_many; $i++)
{
if($abc['boolean_lookup'])
{
$counter1++;
}

}

echo "FIRST: ", (microtime(true) - $start), "\n";

$start = microtime(true);
for($i = 0; $i < $how_many; $i++)
{
if($abc['string_lookup'] == 'something_else')
{
$counter2++;
}

}

echo "SECOND: ", (microtime(true) - $start), "\n";

关于PHP 字符串与 boolean 速度测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1129081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com