Go 和 Java 在各种并发情况下的性能对比测试 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Livid
63.89D
460.44D
V2EX    Go 编程语言

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

  •  
  •   Livid
    PRO
    2012-09-19 04:57:49 +08:00 8103 次点击
    这是一个创建于 4780 天前的主题,其中的信息可能已经有所发展或是发生改变。
    19 条回复    1970-01-01 08:00:00 +08:00
    sqbing
        1
    sqbing  
       2012-09-19 08:08:28 +08:00
    看结果,没有可比性啊
    guotie
        2
    guotie  
       2012-09-19 08:56:56 +08:00
    go怎么会这么差?!
    ch_linghu
        3
    ch_linghu  
       2012-09-19 09:42:47 +08:00
    java 用的是 Jetty, golang 用的是内置的 http server。这可能是原因之一吧。
    frittle
        4
    frittle  
       2012-09-19 10:21:24 +08:00
    huacnlee
        5
    huacnlee  
       2012-09-19 10:40:56 +08:00
    超出预料啊!
    DeepBlue
        6
    DeepBlue  
       2012-09-19 11:19:03 +08:00
    数据库访问层的实现引起的问题,与语言本身关系不大。
    我相信一个烂程序员可以把C写的比PHP还慢:)
    virushuo
        7
    virushuo  
       2012-09-19 11:57:05 +08:00
    这个显然是数据访问层造成的。

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

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

    性能测试没意思,比的是两个 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
        15
    skywinger  
       2012-09-20 22:25:29 +08:00
    Scala在JVM上,性能很不错,可以试试
    ayanamist
        16
    ayanamist  
       2012-09-21 00:19:28 +08:00
    玩了两天Go,这语言不改名字,将会和C#一样叫好不叫座。
    在搜索引擎中,用go加问题根本搜不出东西,而用golang则只能在官方小组里找到有价值的信息(因为正常发帖都是谈Go)
    第三方包的严重匮乏,官方文档也极度匮乏,社区支持因为名字的问题悲剧了。这样的语言性能再好也不见得能流行。
    另外Go还有一个坑:gcc-go和go build编译出来的东西完全不一样,前者有时候性能可以是后者的2X。但前者不受官方重视。
    其实话又说回来,Go语言的设计没有非常突出的地方,Go的代码应该是可以完美自动转化成相应的C代码的
    feilaoda
        17
    feilaoda  
       2012-09-21 09:15:28 +08:00
    @ayanamist 如此言论,无力吐槽了。

    看到Go语言后,就再也不想写C程序了。超级喜欢的一种语言。
    ayanamist
        18
    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
        19
    reus  
       2012-09-21 15:38:48 +08:00
    第一次见用web应用来比较两个语言的……
    要比就该把数据库、http服务器这些都去掉
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3275 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 11:34 PVG 19:34 LAX 04:34 JFK 07:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86