我将在此处支持 cmets,如果您要优化,则不会通过消除重复变量获得太大改进(尽管如果您有巨大的变量,您希望消除重复以保留内存 - 不是速度)。但是,为了演示,我设置了这个基准来测试:
session_start();
$hey = "THIS IS A TEST OF ACCESS SPEEDS"; //our variable
$_SESSION['hey'] = $hey; //out session variable
$hey_array = array('a'=>'random','b'=>'random','c'=>'random'); //another random array
$hey_array['hey'] = $hey;
function access_the_variable($var){
$waste_some_time = substr($var,0,10); //this could be anything
}
//GO!
$start = microtime(true);
for($i=0;$i<100000;$i++){
access_the_variable($hey);
}
$end = microtime(true);
echo "\$hey took ".($end-$start)." microseconds<br />";
$start = microtime(true);
for($i=0;$i<100000;$i++){
access_the_variable($_SESSION['hey']);
}
$end = microtime(true);
echo "\$_SESSION['hey'] took ".($end-$start)." microseconds<br />";
$start = microtime(true);
for($i=0;$i<100000;$i++){
access_the_variable($hey_array['hey']);
}
$end = microtime(true);
echo "\$hey_array['hey'] took ".($end-$start)." microseconds<br /><br />";
多次运行的结果:
$hey 耗时 0.079180002212524 微秒 $_SESSION['hey'] 耗时
0.096824884414673 微秒 $hey_array['hey'] 耗时 0.091028928756714 微秒
$hey 耗时 0.080883026123047 微秒 $_SESSION['hey'] 耗时
0.095050096511841 微秒 $hey_array['hey'] 耗时 0.091977834701538 微秒
$hey 耗时 0.081928968429565 微秒 $_SESSION['hey'] 耗时
0.097215890884399 微秒 $hey_array['hey'] 耗时 0.092087030410767 微秒
$hey 耗时 0.081655979156494 微秒 $_SESSION['hey'] 耗时
0.098057985305786 微秒 $hey_array['hey'] 耗时 0.09247899055481 微秒
$hey 耗时 0.081120014190674 微秒 $_SESSION['hey'] 耗时
0.096808910369873 微秒 $hey_array['hey'] 耗时 0.092255115509033 微秒
$hey 耗时 0.081827878952026 微秒 $_SESSION['hey'] 耗时
0.096134901046753 微秒 $hey_array['hey'] 耗时 0.092247009277344 微秒
$hey 耗时 0.081613063812256 微秒 $_SESSION['hey'] 耗时
0.096814870834351 微秒 $hey_array['hey'] 耗时 0.090691804885864 微秒
所以,在 100,000 次循环中,我们谈论的是 0.01 MICROSCONDS。
然而,值得注意的是,速度差异几乎完全归因于需要访问关联数组。它是一个超全局的事实并不会影响它(但是,数组的长度会影响它,如果您的 SESSION 数组变得很大,您将开始看到微小的速度差异(但同样,我们说的是百万分之一秒)。