kinpoo
注册会员

初级会员
UID 30794
精华
0
积分 101
帖子 108
金钱 101 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2004-8-30
状态 离线
|
serialize+unserialize+file_get_contents进行数组缓存 更快
<?php /* @kinpoo 结果表明: 使用serialize,unserialize将数组以字符串保存 使用文件函数读取 比直接将数组缓存(保存为普通文件) 要快好多! */ runTimer(); $arr = array(); /** ====================================== 闪龙2500 512M内存 Windows ZendStudio(php5) ====================================== for() $arr[] = $i : 0.30359721183777 serialize($arr) : 0.04067587852478 unserialize($str) : 0.017976045608521 saveArray($arr) : 0.47954797744751 array2str($arr) : 0.075201034545898 require array.php : 0.058645963668823 uns get arr2str : 0.026206016540527 --------------------------------------- for() $arr[] = $i : 0.29530215263367 serialize($arr) : 0.040746927261353 unserialize($str) : 0.019726991653442 saveArray($arr) : 0.47745704650879 array2str($arr) : 0.081848859786987 require array.php : 0.061783075332642 uns get arr2str : 0.025933980941772 --------------------------------------- for() $arr[] = $i : 0.3032820224762 serialize($arr) : 0.04182505607605 unserialize($str) : 0.018662929534912 saveArray($arr) : 0.4787380695343 array2str($arr) : 0.064285039901733 require array.php : 0.059487104415894 uns get arr2str : 0.025193929672241
======================================= P4 3.0*2 2G内存 FreeBSD ZUES(php4) ======================================= for() $arr[] = $i : 0.00745916366577 serialize($arr) : 0.00995993614197 unserialize($str) : 0.00597906112671 saveArray($arr) : 0.0302128791809 array2str($arr) : 0.0132899284363 require array.php : 0.0160081386566 uns get arr2str : 0.00748491287231 --------------------------------------- for() $arr[] = $i : 0.00716590881348 serialize($arr) : 0.0100538730621 unserialize($str) : 0.00590419769287 saveArray($arr) : 0.022922039032 array2str($arr) : 0.0129978656769 require array.php : 0.0156490802765 uns get arr2str : 0.00727105140686 --------------------------------------- for() $arr[] = $i : 0.00741505622864 serialize($arr) : 0.010134935379 unserialize($str) : 0.0060088634491 saveArray($arr) : 0.0238091945648 array2str($arr) : 0.0134818553925 require array.php : 0.016517162323 uns get arr2str : 0.0071918964386 */ /** 一维数组 10000元素 **/ //for ($i=0;$i<10000;$i++) //{ // $arr[] = $i; //}
/* ====================================== 闪龙2500 512M内存 Windows ZendStudio(php5) ====================================== for() $arr[] = $i : 0.18432211875916 serialize($arr) : 0.031507968902588 unserialize($str) : 0.034507989883423 saveArray($arr) : 0.63693904876709 array2str($arr) : 0.028126001358032 require array.php : 0.066259860992432 uns get arr2str : 0.033874988555908 --------------------------------------- for() $arr[] = $i : 0.18541598320007 serialize($arr) : 0.030216932296753 unserialize($str) : 0.03343391418457 saveArray($arr) : 0.64722514152527 array2str($arr) : 0.03127384185791 require array.php : 0.050411224365234 uns get arr2str : 0.029117822647095 --------------------------------------- for() $arr[] = $i : 0.18497705459595 serialize($arr) : 0.029504060745239 unserialize($str) : 0.032404899597168 saveArray($arr) : 0.64386487007141 array2str($arr) : 0.021266222000122 require array.php : 0.050238847732544 uns get arr2str : 0.036464929580688
======================================= P4 3.0*2 2G内存 FreeBSD ZUES(php4) ======================================= for() $arr[] = $i : 0.00499582290649 serialize($arr) : 0.00840902328491 unserialize($str) : 0.00594711303711 saveArray($arr) : 0.075856924057 array2str($arr) : 0.0107200145721 require array.php : 0.0161650180817 uns get arr2str : 0.00800800323486 --------------------------------------- for() $arr[] = $i : 0.00484800338745 serialize($arr) : 0.00845813751221 unserialize($str) : 0.005854845047 saveArray($arr) : 0.0720150470734 array2str($arr) : 0.00950694084167 require array.php : 0.0161731243134 uns get arr2str : 0.00786995887756 --------------------------------------- for() $arr[] = $i : 0.00545597076416 serialize($arr) : 0.00866007804871 unserialize($str) : 0.00611996650696 saveArray($arr) : 0.0828499794006 array2str($arr) : 0.0136148929596 require array.php : 0.0294671058655 uns get arr2str : 0.0131070613861 */ /** 1000维数组 10000元素 **/ $ref = &$arr; for ($i=0;$i<1000;$i++) { $ref[0] = $i; $ref[1] = $i; $ref[2] = $i; $ref[3] = $i; $ref[4] = $i; $ref[5] = $i; $ref[6] = $i; $ref[7] = $i; $ref[8] = $i; $ref[9] = array(); $ref = &$ref[9]; }
runTimer('for() $arr[] = $i '); $str = serialize($arr); runTimer('serialize($arr) '); $arr = unserialize($str); runTimer('unserialize($str) '); saveArray($arr, 1); runTimer('saveArray($arr) '); array2str(&$arr); runTimer('array2str($arr) '); require('test.array.php'); runTimer('require array.php '); $arr = unserialize(file_get_contents('test.arr2str.php')); runTimer('uns get arr2str '); function runTimer($str = '') { //统计时间 static $st = 0; $mt = explode(' ', microtime()); $ct = $mt[0] + $mt[1]; if ($st) echo "n$str: ", $ct - $st; $st = $ct; }
function saveArray(&$arr, $isbase = 0) { //保存数组的 $pre = ''; $str = 'array('; foreach ($arr as $one) { if (is_array($one)) { $str .= $pre.saveArray($one); } else { $str .= $pre."'$one'"; } $pre = ','; } $str .= ')'; if ($isbase) { $fp = fopen('test.array.php', 'wb'); fwrite($fp, "<?n$arr=$str;n?>"); fclose($fp); }else{ return $str; } }
function array2str(&$arr) { //保存数组的serialize字符串 $fp = fopen('test.arr2str.php', 'wb'); fwrite($fp, serialize($arr)); fclose($fp); } ?> [ 本帖最后由 kinpoo 于 2006-8-9 02:25 PM 编辑 ]
|  矛盾是发展的源泉。 |
|