首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >function_exists性能成本

function_exists性能成本
EN

Stack Overflow用户
提问于 2017-01-10 11:44:46
回答 2查看 730关注 0票数 1

有人有关于function_exists计算成本的数据吗?我有个片段:

代码语言:javascript
运行
复制
if(function_exists('fastcgi_finish_request')) {
    fastcgi_finish_request();
}

之所以需要它,只是因为这个函数在dev环境中不存在,但是它将始终存在于生产中。由于我需要高效率(这个脚本每天被调用数百万次,并且必须尽可能快),我应该在部署到生产之前删除这个检查吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-10 11:47:36

如果有时该函数可能不存在,则需要此函数。

您可以删除此检查,并在不执行任何操作的dev环境中实现空方法function fastcgi_finish_request() {}

票数 1
EN

Stack Overflow用户

发布于 2020-07-24 14:49:12

我对性能也有同样的问题,所以我做了一个简单的脚本来测试它,下面的代码和结果。

代码语言:javascript
运行
复制
PHP 5.6.40 (1.000.000)
checkByFunction: 0.16808795928955
checkByVersion: 0.97429490089417
代码语言:javascript
运行
复制
<?php
function checkByVersion($expectedMajor = 5, $expectedMinor = 5)
{
    //Explode (semver.org MAJOR.MINOR.PATCH)
    $phpversion = explode(".", phpversion());
    $phpversion_major = (int) $phpversion[0];
    $phpversion_minor = (int) $phpversion[1];

    //if php_version > 5 or 5.5
    if($phpversion_major > $expectedMajor || ($phpversion_major == $expectedMajor && $phpversion_minor >= $expectedMinor) ){
        return true;
    } else {
        return false;
    }
}

//Test
$iterations = 1000000;

$byFunctionTimeStart = 0;
$byFunctionTimeEnd = 0;

$byVersionTimeStart = 0;
$byVersionTimeEnd = 0;

//ByFunction
$byFunctionTimeStart = microtime(true);
for ($i=0; $i < $iterations; $i++) { 
    function_exists("curl_file_create");
}
$byFunctionTimeEnd = microtime(true);
$byFunctionTimeResult = $byFunctionTimeEnd - $byFunctionTimeStart;

//ByVersion
$byVersionTimeStart = microtime(true);
for ($i=0; $i < $iterations; $i++) { 
    checkByVersion();
}
$byVersionTimeEnd = microtime(true);
$byVersionTimeResult = $byVersionTimeEnd - $byVersionTimeStart;

echo "<pre>";
echo "PHP ".phpversion()." (".number_format($iterations, 0, ".", ".").")";
echo "<br/>checkByFunction: ".$byFunctionTimeResult;
echo "<br/>checkByVersion: ".$byVersionTimeResult;
echo "</pre>";
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41568048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档