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。