java 和galong都是很优秀的语言,他们之间的差异,我们来做一些对比实验。

对比一

java代码:

public static void main(String[] args){
 long startTime=System.currentTimeMillis();
 double c=0d;
 for (int i=0;i<100000000;i++) {
 c+=(double)i;
 }
 long endTime=System.currentTimeMillis();
 long timeLength=endTime-startTime;
 System.out.println(startTime+"=>"+endTime+" 使用时长:"+timeLength);
}
 

golang代码:

func main() {
 var startTime int64 =time.Now().UnixNano();
 var c float64=0;
 for i:=1;i<100000000;i++{
 c+=float64(i);
 }
 var endTime int64=time.Now().UnixNano();
 var timeLength=endTime-startTime;
 fmt.Println(startTime,"=>",endTime,"使用时长:",timeLength)
}
 

执行结果:

java :1554555968216=>1554555968468 使用时长:252
golang:1554555958279724026 => 1554555958351731440 使用时长: 72007414
 

从执行效率方面,确实golang有很大优势,java消耗时间是golang的3.5倍左右。

对比二:

java 代码

public class testXiaolv {
 public static void main(String[] args){
 for (int i=0;i<100;i++){
 new ThreadWorker().start();
 }
 }
}
class ThreadWorker extends Thread{
 private long i=0;
 public void run(){
 while (true){ //模拟工作
 System.out.println(i);
 i++;
 try {
 Thread.sleep(100);
 }catch (Exception e){
 }
 }
 }
}
 

golang代码:

var i int64=0;
func main() {
 for i:=0;i<100;i++ {
 go testWorker();
 }
 time.Sleep(time.Duration(200)*time.Second)
}
func testWorker() {
 for {
 fmt.Println(i);
 i++;
 time.Sleep(time.Duration(100) * time.Millisecond)
 }
}
 

执行效果:

 7002 liutao 20 0 3974236 34756 18708 S 6.6 0.7 0:01.97 java 
 6982 liutao 20 0 7812 3168 988 S 4.3 0.1 0:01.08 testxiaolv 
 

可以看出,其实java在内存使用和cpu的使用都比golang高。

今天对比java和golang的差异,其实并不是说java不好(我现在手上项目95%的都是java写的),通过了解其它语言的优点,在日后项目的中,要综合评估。

感谢有伟大的java和golang。