PHP 性能分析与实验:性能的宏观分析(3)

if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,"l",&value)== FAILURE){

return;

}

int*numbers =(int*)malloc(sizeof(int)*128*10000);

memset(numbers,0x0,128*10000);

int num =2;

numbers[0]=2;

numbers[1]=3;

bool flag =true;

double f =0;

int i =0;

int j =0;

for(i=5; i<=value; i+=2)

{

flag =true;

f = sqrt(i);

for(j=0; j<num;j++)

{

if(i%numbers[j]==0)

{

flag =false;

break;

}

if(numbers[j]>f)

{

break;

}

}

if(flag)

{

numbers[num]= i;

num++;

}

}

free(numbers);

RETURN_LONG(num);

}

三、PHP 语言本身底层性能引擎提升

第三个性能优化层面是语言本身的性能提升,这个就不是我们普通开发者所能做的了。在 PHP 7以前,寄希望于小版本的改进,但是改进幅度不是非常的显著,比如 PHP 5.3 、PHP 5.4、PHP 5.5、PHP 5.5 对同一段代码的性能比较,有一定程度的进步。

PHP 5.3 的版本在上面的例子中已讲过,需要 33s 左右的时间,我们现在来看别的PHP版本。分别运行如下:

PHP 5.4 版,相较 5.3 版已经有一定程度的提升。快 6 秒左右。

图13、在PHP 5.4中,筛选法求素数的效率

图13、在PHP 5.4中,筛选法求素数的效率

PHP 5.5 版在 PHP 5.4的基础上又进了一步,快了 6S。

图14、在PHP 5.5中,筛选法求素数的效率

图14、在PHP 5.5中,筛选法求素数的效率

PHP5.6 反而有些退步。

图15、在PHP 5.6中,筛选法求素数的效率

图15、在PHP 5.6中,筛选法求素数的效率

PHP 7 果真是效率提升惊人,是 PHP5.3 的 3 倍以上。

图16、在PHP 7中,筛选法求素数的效率

图16、在PHP 7中,筛选法求素数的效率

以上是求素数脚本在各个 PHP 版本之间的运行速度区别,尽管只测试了这一个程序,也不是特别的严谨,但是这是在同一台机器上,而且编译 configure 参数也基本一样,还是有一定可比性的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d785bb936ec50e79c39c55e494f540d3.html