php8.0 win10下安装以及开启 jit 流程,测试与 golang , java 性能差距

11月26日发布

下载地址:https://www.php.net/downloads

环境:本地 win10系统

性能测试:随机生成数组冒泡排序,10000条,结果2秒左右与php7.4相差无几。

开启jit 过程

根目录下创建php.ini文件

将php.ini-development 文件内容复制到里面

找到 [opcache] 下设置(填写你自己的ext\php_opcache.dll位置)

opcache.enable=1
zend_extension="C:\phpstudy_pro\Extensions\php\php8\ext\php_opcache.dll"

opcache.jit=1255
opcache.jit_buffer_size=100M

重启服务器打印:phpinfo()  jit是on就是开启成功了

再次测试 0.6秒 左右,性能确实提高不少。

 

同样算法下

用golang同样的算法:用切片类型是 0.133秒, 数组类型0.097秒

用java同样算法:0.130左右

附上代码

php:

function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

$time_start = microtime_float();
$n = 1e4;
$arr = [];
for($i=0;$i<$n;$i++) {
    $arr[] = rand(1,1e4);
}
foreach ($arr as $k=>$v) {
    for($i=$k+1;$i<$n;$i++) {
        if($arr[$k] < $arr[$i]) {
            $vvv = $arr[$k];
            $arr[$k] = $arr[$i];
            $arr[$i] = $vvv;
        }
    }
}

$time_end = microtime_float();
$time = $time_end - $time_start;
echo $time;

golang:

	t1 := time.Now()
	len := 10000
	//切片
	var arr = make([]int, len)
	//数组
	//var arr [10000]int  
	rand.Seed(time.Now().UnixNano())
	for i := 0;i<len;i++ {
		arr[i] = rand.Intn(1e6)
	}

	for val := range arr {
		for j := val+1;j<len;j++ {
			if arr[val] < arr[j] {
                arr[val],arr[j] = arr[j],arr[val]
			}
		}
	}

	t2 := time.Since(t1)
	fmt.Println(t2)

java: 

    @ResponseBody
    @RequestMapping("/sort")
    public long sort() {
        long t1 = System.currentTimeMillis();
        int n = 10000;
        int[] arr = new int[n];
        Random r = new Random();
        for (int i = 0; i < n; i++) {
            int ran1 = r.nextInt(100000);
            arr[i] = ran1;
            //System.out.println(ran1);
        }

        for(int i = 0;i< n;i++) {
            for(int j=i+1;j<n;j++) {
                if(arr[i]<arr[j]) {
                    int vvv = arr[i];
                    arr[i] = arr[j];
                    arr[j] = vvv;
                }
            }
        }
        //System.out.println(System.currentTimeMillis()-t1);
        return System.currentTimeMillis()-t1;
    }

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值