当前位置:首页 > 操作系统 > MacOs

Ubuntu和Macports版本的PHP之间存在奇怪的性能差异

在对个人宠物项目进行一些分析之后,我正在玩一些愚蠢的微观优化.它在很大程度上是一个实验,所以我正在调整的东西实际上并不需要调整.尽管如此,这仍然是一项有趣的练习.

无论如何,我在OS X上通过Macports安装PHP 5.3和从apt安装Ubuntu时遇到了奇怪的性能差异.

似乎以下代码显示了OS X上两个不同版本之间的巨大速度差异,但在Ubuntu上只有极小的速度差异.

<code>$x = array(9);

// As per BarsMonster's comment, this ensures it runs for more
// than a second in order to avoid possible kernel scheduler differences
$count = 10000000;
$s = microtime(true);
for ($i=0;$i<$count;$i++) {
    $q = is_string($x);
}
var_dump(microtime(true)-$s);

$s = microtime(true);
for ($i=0;$i<$count;$i++) {
    // This is obviously only useful if you'll never need a string 
    // with 'Array' in it here
    $q = (string)$x!='Array';
}
var_dump(microtime(true)-$s);
</code>

在OS X上运行时的输出:

<code>float(17.977133989334)
float(4.2555270195007)
</code>

在Ubuntu上运行时的输出:

<code>float(5.2112979888916)
float(3.4337821006775)
</code>

看到被黑客攻击的版本的数字非常相似并不令我感到惊讶,但是is_string方法却截然不同.

我可以将此归因于什么?如果从简单类型测试功能的安装到安装的性能变化很大,我如何使用与我的目标部署平台不匹配的操作系统信任分析结果?

在Ubuntu和OS X上打开或关闭APC的时间没有区别.

解决方法:

Ubuntu安装与OS X安装在同一台PC上?

它可能与zts有关.

尝试使用两个系统上的相同标志自行配置它.
默认情况下,在ubuntu上可能启用了选项,默认情况下在Ports中禁用这些选项.

我不确切知道哪个,但你的phpinfo()会告诉我.如果没有(也许phpinfo没有显示,也许它只是显示一个空白页;那么你的系统之一可能正在编译Susoshin补丁(或其他).


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐