通过SELECT以及$rs = mysql_fetch_array($row)读取了数据~请问下面两种写法请问那一种对服务器负担较小呢?
写法1:$name = $rs[name];for ($i=1; $i=100; $i++){echo $name;}写法2:for ($i=1; $i=100; $i++){echo $rs[name];}
一种是直接读取数据库数据~一种是给变量赋了值后复制变量~请问那一种对服务器负担较小呢???望高人解答我的困惑~谢谢!
写法1:$name = $rs[name];for ($i=1; $i=100; $i++){echo $name;}写法2:for ($i=1; $i=100; $i++){echo $rs[name];}
一种是直接读取数据库数据~一种是给变量赋了值后复制变量~请问那一种对服务器负担较小呢???望高人解答我的困惑~谢谢!
$name = $rs[name]; 只是传了个引用给$name.
echo $name时还是指到了$rs的地址空间。只是多了一个地址传递操作(32bit)。
这里真正能提高性能的是$rs[name]=>写成$rs['name']数组内不加引号定义,会有一个经过一个变量与常量的分辨过程。
这样呢?:
$name = $rs[name];
unset($rs[name]);
for ($i=1; $i=100; $i++){echo $name;}
function get_microtime() {
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec + (float)$sec);
}
$a=array();
for ($i=0;$i<10000;$i++) {
$a['key'.rand()] = 'xxxx';
}
$a['key1000'] = 'yyy';
$t1 = get_microtime();
$item=$a['key1000'];
for ($i=0;$i<10000;$i++) {
$y = $item;
}
$t2 = get_microtime();
echo ($t2-$t1)."\n";
$t1 = get_microtime();
for ($i=0;$i<10000;$i++) {
$y=$a['key1000'];
}
$t2 = get_microtime();
echo ($t2-$t1)."\n";
?>执行结果
0.0022048950195312
0.0029168128967285方法1稍微快一点
完全理解错误,copy on write机制不是这么解释的