访问本地PHP变量访问会话PHP变量的速度更快吗?

时间:2010-09-09 16:27:11

标签: php

这只是一个性能问题。

什么更快,访问本地PHP变量或尝试访问会话变量?

4 个答案:

答案 0 :(得分:6)

我不认为这会产生任何可衡量的差异。在您的脚本实际运行之前,PHP已填充$_SESSION,因此这就像访问任何其他变量一样。

答案 1 :(得分:4)

Superglobals的访问速度会比非超全局变量稍慢。但是,只有在脚本中进行数百万次访问时,这种差异才会显着,即使这样,这种差异也不能保证代码的更改。

$_SESSION['a'] = 1;
$arr['a'] = 1;

$start = 0; $end = 0;

// A
$start = microtime(true);
for ($a=0; $a<1000000; $a++) {
    $arr['a']++; 
}
$end = microtime(true);
echo $end - $start . "<br />\n";

// B
$start = microtime(true);
for ($b=0; $b<1000000; $b++) {  
    $_SESSION['a']++;   
}
$end = microtime(true);
echo $end - $start . "<br />\n";

/* Outputs: 
0.27223491668701
0.40177798271179

0.27622604370117
0.37337398529053

0.3008668422699
0.39706206321716

0.27507615089417
0.40228199958801

0.27182102203369
0.40200400352478
*/

答案 2 :(得分:0)

这取决于,你是在谈论将$_SESSION变量设置为局部变量以便在整个文件中使用还是简单地讨论这两种变量之间的固有差异?

一个由您声明,另一个是核心功能。将$_SESSION变量设置为局部变量总是慢一点,但与易于阅读和重复使用相比,这里的差值代码可以忽略不计。

答案 3 :(得分:0)

这个问题与表现无关 唯一的性能问题是真实问题,其中包含分析报告 否则它只是空洞的喋喋不休。

实际上,这种差异永远不会成为瓶颈 并没有任何区别。