今天无聊做了个小小的测试,结果却出乎我的意料。我对比了 isset 函数和比较运算符的速度,结果竟是 isset 比较快!
下面是测试代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | header("Content-Type: text/plain"); $tests = array('[size=1]', '[table=1px,solid,black]', '[/table]', '[/a=testit]'); for ($i = 0; $i < 10; ++$i) { $st = microtime(true); for ($j = 0; $j < 20; ++$j) { foreach ($tests as $test) { preg_match('/^\[(?<c>\/)?[A-Za-z]\w*(?(c):(?!)|=[^\]]*)?\]$/', $test); explode('=', substr($test, 1, -1), 1); } } $et = microtime(true); printf("%.6F\t", $et - $st); $st = microtime(true); for ($j = 0; $j < 20; ++$j) { foreach ($tests as $test) { preg_match('/^\[(?<c>\/)?([A-Za-z]\w*)(?(c):(?!)|=([^\]]*))?\]$/', $test, $r); } } $et = microtime(true); printf("%.6F\n", $et - $st); } |
下面选取了在我机子上和在我的网页服务器上测试的数据,这两台机的操作系统都是 Ubuntu,PHP 都为 5.2.6。我在学校服务器上测试结果与这里有较大出入,疑是 PHP 版本不同的缘故。
下面数据每个前15行为单独跑的数据,后面三行分别为最慢、最快和去掉最大最小值的平均值。
三列分别表示 isset、与变量比大小,与数值比大小。
下面是在我机子上跑的数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 0.001914 0.003213 0.003172 0.001762 0.002843 0.003285 0.001810 0.002995 0.003005 0.001736 0.002813 0.002978 0.001803 0.002903 0.003003 0.001814 0.002854 0.003005 0.001822 0.002850 0.003025 0.001809 0.002843 0.003014 0.001806 0.002834 0.003009 0.001790 0.002822 0.003000 0.001764 0.002838 0.002999 0.001766 0.003941 0.003149 0.001785 0.002831 0.003017 0.001794 0.002822 0.003011 0.001769 0.002854 0.003014 0.001914 0.003941 0.003285 0.001736 0.002813 0.002978 0.001792 0.002885 0.003033 |
这个是在我的服务器上跑的数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 0.001070 0.001156 0.001107 0.001063 0.001157 0.001108 0.001061 0.001155 0.001127 0.001063 0.001156 0.001106 0.001060 0.001155 0.001105 0.001059 0.001142 0.001145 0.001042 0.001141 0.001111 0.001119 0.001146 0.001133 0.001041 0.001142 0.001104 0.001040 0.001146 0.001153 0.001114 0.001152 0.001105 0.001056 0.001248 0.001111 0.001046 0.001148 0.001111 0.001079 0.001153 0.001103 0.001057 0.001160 0.001112 0.001119 0.001248 0.001153 0.001040 0.001141 0.001103 0.001062 0.001151 0.001114 |
(可以看出我的机子还是比不过那服务器的……不知道配置问题还是 Ubuntu Desktop 和 Server 的差别……)
同时我发现,在我的机上,与数值比大小比与变量比大小还慢,但在服务器上没有出现这种情况(本来就不该……)
神奇的测试结果……
Comments