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中,筛选法求素数的效率
PHP 5.5 版在 PHP 5.4的基础上又进了一步,快了 6S。
图14、在PHP 5.5中,筛选法求素数的效率
PHP5.6 反而有些退步。
图15、在PHP 5.6中,筛选法求素数的效率
PHP 7 果真是效率提升惊人,是 PHP5.3 的 3 倍以上。
图16、在PHP 7中,筛选法求素数的效率
以上是求素数脚本在各个 PHP 版本之间的运行速度区别,尽管只测试了这一个程序,也不是特别的严谨,但是这是在同一台机器上,而且编译 configure 参数也基本一样,还是有一定可比性的。