11月26日发布
下载地址:https://www.php.net/downloads
环境:本地 win10系统
性能测试:随机生成数组冒泡排序,10000条,结果2秒左右与php7.4相差无几。
开启jit 过程
根目录下创建php.ini文件
将php.ini-development 文件内容复制到里面
找到 [opcache] 下设置(填写你自己的ext\php_opcache.dll位置)
1 2 3 4 5 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | @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; } |