Go 和 Java 在各种并发情况下的性能对比测试

2012-09-19 04:57:49 +08:00
 Livid
http://boundary.com/blog/2012/09/17/comparing-go-and-java-part-2-performance/
7673 次点击
所在节点    Go 编程语言
19 条回复
sqbing
2012-09-19 08:08:28 +08:00
看结果,没有可比性啊
guotie
2012-09-19 08:56:56 +08:00
go怎么会这么差?!
ch_linghu
2012-09-19 09:42:47 +08:00
java 用的是 Jetty, golang 用的是内置的 http server。这可能是原因之一吧。
frittle
2012-09-19 10:21:24 +08:00
huacnlee
2012-09-19 10:40:56 +08:00
超出预料啊!
DeepBlue
2012-09-19 11:19:03 +08:00
数据库访问层的实现引起的问题,与语言本身关系不大。
我相信一个烂程序员可以把C写的比PHP还慢:)
virushuo
2012-09-19 11:57:05 +08:00
这个显然是数据访问层造成的。

另外Java也确实没有人们认为的那么慢,在超过2个core,并有大量内存的机器上,性能还是很不错的。
lidashuang
2012-09-19 12:06:10 +08:00
再差应该也比Ruby快吧
iwinux
2012-09-19 12:11:27 +08:00
我比较关心 startup time 诶,这个 Go 应该胜过 Java 吧
fwee
2012-09-19 14:38:15 +08:00
@lidashuang 关键GO很重要的优势就是‘速度快’。而ruby不是
soulhacker
2012-09-19 15:04:44 +08:00
Java 过了幼儿期之后一直都是服务器端性能标杆,和高效的 C 代码也只差一个数量级;JVM 主要问题是初始化慢以及 GC 带来的内存应用问题,不过在 always-on 的服务器端初始化问题较不重要。

不太了解这个测试中 Go 具体性能问题在哪里,不过这个语言还年轻,这么比不太公平。
yys
2012-09-20 11:15:35 +08:00
什么都可以快 什么都可以慢 要看应用上下文 如具体人,具体应用 ...
ikbear
2012-09-20 12:20:59 +08:00
clowwindy
2012-09-20 18:00:58 +08:00
语言之间最重要的差别是语法。作者比较了两个语言代码的差异,这点很有意思。

性能测试没意思,比的是两个 http server 实现的优劣。如果原理一致,http server 之间性能是没什么差别的,就好像拿 Tornado 和 nginx 比静态文件的处理,速度也差不多。

比较语言本身的性能,就要上各种算法。

量化后的结果可以看 Computer Language Benchmarks Game,Java 7 速度和 gcc C 是可比的(慢1~2x 左右),Go 是一门慢 3~10x 的语言,和 javascript V8 比较接近。Python、Ruby 基本上是慢 10~100x 的语言,速度上和上述几种语言不具有可比性。

http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=go&lang2=gcc


我觉得从这点上考虑,javascript 前景更好一些,具有和 Go 差不多的性价比(速度 / 代码大小),具有成熟的社区,庞大的库,能做的事情覆盖前后端,移动,甚至线下处理。我现在就经常在 mapreduce 上用 node.js 的 cheerio 分析网页。除了 jQuery 的 API,还有什么语言的什么接口更适合用在网页分析上呢?
skywinger
2012-09-20 22:25:29 +08:00
Scala在JVM上,性能很不错,可以试试
ayanamist
2012-09-21 00:19:28 +08:00
玩了两天Go,这语言不改名字,将会和C#一样叫好不叫座。
在搜索引擎中,用go加问题根本搜不出东西,而用golang则只能在官方小组里找到有价值的信息(因为正常发帖都是谈Go)
第三方包的严重匮乏,官方文档也极度匮乏,社区支持因为名字的问题悲剧了。这样的语言性能再好也不见得能流行。
另外Go还有一个坑:gcc-go和go build编译出来的东西完全不一样,前者有时候性能可以是后者的2X。但前者不受官方重视。
其实话又说回来,Go语言的设计没有非常突出的地方,Go的代码应该是可以完美自动转化成相应的C代码的
feilaoda
2012-09-21 09:15:28 +08:00
@ayanamist 如此言论,无力吐槽了。

看到Go语言后,就再也不想写C程序了。超级喜欢的一种语言。
ayanamist
2012-09-21 15:18:56 +08:00
@feilaoda 欢迎吐槽。写的比C舒服的语言多的很,不管是Python、Ruby还是Java、C#,甚至满是坑的C++,没必要圈死在Go上。
Go的语法确实从理论上可以完美转换到C上的,interface是一种编译期的检查,func (thisO *Object) funcName(Arguments *Object) Object{}这种完全可以替换为Object funcName(*Object thisO, *Object Arguments){}这种C格式。至于for语句就更不说了。map和slice也都在C中有第三方库可以支持,Go只是内置了这种支持。select语句是对select、epoll、kqueue的上层封装,chan是socket queue的上层封装。range也只是一个utility。所以Go的核心语言设计是可以和C完全对应起来的。语言设计本身,Go离C并不远,距离远小于C++、Java、Python、Ruby这类真正的高级语言。
唯一值得陈赞的就是GC的设计了,不过GC设计本身就很有争议。
我个人觉得Go的定位以及命名都充满了迷茫。
reus
2012-09-21 15:38:48 +08:00
第一次见用web应用来比较两个语言的……
要比就该把数据库、http服务器这些都去掉

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/48025

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX