我的做PHP的,近来突发奇想,想比较做同样的事情PHP和C的效率差异。所以写了两段简单的测试代码,因为对C的了解不是太深,所以C的代码是直接从网上找来的。先看代码吧!
PHP代码:
<?php $i = 10000000; $a = explode(" ",microtime()); while($i--); $b = explode(" ",microtime()); echo ($b[0] + $b[1]) - ($a[0] + $a[1]),"/n"; ?>C语言代码:
#include "stdio.h" #include "stdlib.h" #include "time.h" int main( void ) { long i = 10000000L; clock_t start, finish; double duration; printf( "Time to do %ld empty loops is ", i ); start = clock(); while( i-- ) finish = clock(); duration = (double)(finish - start) / CLOCKS_PER_SEC; printf( "%f seconds/n", duration ); }
上面两段都是进行一千万次空循环,
在我的电脑上测试结果为:
PHP执行时间为:0.3034秒
C的执行时间为:3.6400秒
难以置信,难道C的效率还不如PHP,打死我都不信。问题应该出在代码上,来回又看了几遍C的代码,发现了一个不正常的地方:while( i-- )后面没有分号!
在后面加上分号,重新测试,执行时间为:0.04秒。比PHP快多了,这个结果我还是满意的。
如果while()后面没有括号也没有分号时,它的作用范围就是到它后面的第一个分号;上面的C代码每次while循环都会多执行一次 finish = clock(),看来这函数还是比较浪费时间的。
因为少了一个分号,让代码的效率降低了将近100倍。
所以在这里还是提醒大家:写循环时一定要注意它的作用范围,把和循环无关的又占用时间的代码放到循环的外面,代码效率能有很大的提高。
原文来自:苗雨顺的CSDN博客 http://blog.csdn.net/rainday0310