首页 » PHP教程 » php和javamd5技巧_经由进程冒泡排序测试Java和PHP机能

php和javamd5技巧_经由进程冒泡排序测试Java和PHP机能

访客 2024-11-03 0

扫一扫用手机浏览

文章目录 [+]

然而,在接下来的比拟测试中,PHP的表现就有些堪忧了。

我们随机天生10000个随机整数,然后再对这些数字排序,末了打印出前面10个和后面10个数字,先上程序:

php和javamd5技巧_经由进程冒泡排序测试Java和PHP机能

Java Spring Boot

php和javamd5技巧_经由进程冒泡排序测试Java和PHP机能
(图片来自网络侵删)

package com.example.demo;import java.util.Random;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class mysort {@RequestMapping("/mysort")@ResponseBodypublic String mysort(Integer gs) {int csgs=1000;if(gs!=null)csgs=gs.intValue();return doSort(csgs);}private String doSort(int cs) {long startTime = System.currentTimeMillis();StringBuffer otxt=new StringBuffer();Random random=new Random();int[] data=new int[cs];int tmp;for(int i=0;i<cs;i++) {data[i]=random.nextInt(10000);}for(int i=cs-1;i>=0;i--) {for(int j=0;j<i;j++) {if(data[j]<data[j+1]) {tmp=data[j];data[j]=data[j+1];data[j+1]=tmp;}}}for(int i=0;i<cs;i++) {if(i>=10 && i<cs-10)continue;otxt.append("<br>");otxt.append(i);otxt.append(':');otxt.append(data[i]);}String rtxt=otxt.toString();long endTime=System.currentTimeMillis();return "耗时:"+(endTime-startTime)+"毫秒<br><br>"+rtxt;}}

PHP:

<?php$t1=microtime(true);$cs=empty($_GET['gs'])?1000:intval($_GET['gs']);$data=array();$tmp=0;$otxt='';for($i=0;$i<$cs;$i++)$data[$i]=rand(0,9999);for($i=$cs-1;$i>=0;$i--){for($j=0;$j<$i;$j++){if($data[$j]<$data[$j+1]){$tmp=$data[$j];$data[$j]=$data[$j+1];$data[$j+1]=$tmp;}}}for($i=0;$i<$cs;$i++){if($i>=10 && $i<$cs-10)continue;$otxt=$otxt.'<br>'.$i.':'.$data[$i];}$t2=microtime(true);$t3=intval(($t2-$t1)1000);echo '耗时:'.$t3.'毫秒'.$otxt;?>

经由10次运算,Java均匀耗时仅177.8毫秒,而PHP平时耗时达到了胆怯的1975.5毫秒,如果把PHP版本换成5.2版权,这个韶光乃至达到6000毫秒以上。

相同的机器,Java比PHP快了10倍以上

Java 用的OpenJDK18.9

PHP用的8.1.1

Java对10000个随机数排序

PHP对10000个随机数排序

PHP是一种弱类型的措辞,它对变量类型不敏感,它的每一个变量存储在一个名字zval的构造体里面,数组是一个名为hashTable的构造体,数组元素存储在bucket的构造体中,经由一系统的折腾,不管是对付数组的查询还是修正,效率远低于Java,刚才的程序,即便是跳过排序操作,仅做那个嵌套循环,也须要200多毫秒才能完成。

for($i=0;$i<$cs;$i++)$data[$i]=rand(0,9999);for($i=$cs-1;$i>=0;$i--){for($j=0;$j<$i;$j++){//删除了此处的排序操作}}for($i=0;$i<$cs;$i++){if($i>=10 && $i<$cs-10)continue;$otxt=$otxt.'<br>'.$i.':'.$data[$i];}

仅作嵌套循环,不排序也要花207毫秒

总结:PHP从5.2升级到8.1后,性能提升很明显,但面对繁芜的运算,Java的数据组织和运算效率远高于PHP。

标签:

相关文章