Java与Go语言的学习成本相差多少

更新时间:02-03 教程 由 毒盅 分享

Java与Go语言的学习成本相差多少?

go语言入门特别容易,熟悉c/c++和汇编的人精通go特别快,Java入门一般,但是精通也不是很容易,

go入门简单但是精通难。go编译后是汇编代码,Java编译后是Java字节码。理解go的底层可以写出很高效的代码。Java需要解释执行。两者性能差不多,但对于纯计算go会更好一些。因为如果不调用任何函数,是不会引起go的协程切换的,此时该计算代码会独占cpu,且由于是汇编代码(不调用库函数情况下生成的汇编和c语言是一样的)因此性能极佳。go语言的函数编译器会在函数开始位置插入一段代码,这段代码会判断当前栈空间是否够用,如果不够用就会扩展,同时如果检测到当前协程被标记为可抢占,那么就会切换到下一个协程,这个抢占标记是由一个独立线程每隔20us-10ms进行检测维护的,全局同时运行的协程是多个分别从不同的p结构体中获取。这就是为什么如果不显示或者隐式调用任何函数时,是不会出发协程切换,这就意味着该协程单独占用一个操作系统线程。而且go语言的编译器和运行时管理函数都是用c和汇编写的。从上面的特性来看,go在编写并发程序时特别简单方便,而且遇到io阻塞时性能远远大于Java,原理决定了这些特性,Java用的是操作系统线程,因此对于阻塞的io线程会白白浪费掉时间片,同时频繁的线程切换会导致cpu缓存命中率低下,这些都会影响性能。而go的协程在一定程度上减弱了这些影响。而且对于计算密集任务合理利用go的机制也能使性能极高。很多对于go、c、rust的性能测试过于肤浅并未利用go的机制,导致看起来性能和rust差距不小,但是合理利用这些机制则差距很小。

声明:关于《Java与Go语言的学习成本相差多少》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2202808.html