为什么 leetcode 上面, java 的效率连 js 都比不过=。= - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fszaer
V2EX    问与答

为什么 leetcode 上面, java 的效率连 js 都比不过=。=

  •  
  •   fszaer 2015-06-03 09:28:34 +08:00 6345 次点击
    这是一个创建于 3862 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在刷题大概才刷了1/3,然后我看了一下各个语言的Runtime Distribution
    不用说,C/C++总是是最靠前,让我好奇的是
    我刷了这1/3的题里java的整体分布或者是平均值在js/python前的次数屈指可数|` )
    感觉有点不科学,静态编译的语言不是应该比动态语言快么
    难道是leetcode的统计系统不够完善么
    顺带一提js同一份源码提交上去时快时慢,浮动幅度十分大啊。这又是什么原因Σ( д)

    19 条回复    2016-05-09 00:01:44 +08:00
    df4VW
        1
    df4VW  
       2015-06-03 09:30:34 +08:00
    Cuz its nodejs 0.12.3
    fangjinmin
        2
    fangjinmin  
       2015-06-03 09:31:04 +08:00
    可能是因为JVM太慢了。
    braineo
        3
    braineo  
       2015-06-03 09:33:06 +08:00
    虚拟机启动时间?
    tabris17
        4
    tabris17  
       2015-06-03 09:40:28 +08:00
    像LeetCode这种平台,Python,Ruby环境支持安装第三方包/组件么?
    morethansean
        5
    morethansean  
       2015-06-03 09:44:03 +08:00   1
    V8也是有点水平的好吗!
    Narcissu5
        6
    Narcissu5  
       2015-06-03 09:49:26 +08:00
    估计是HotSpot的原因,java只有在有一定运行信息之后才开始优化
    oott123
        7
    oott123  
       2015-06-03 09:51:39 +08:00 via Android
    难道不是本来就比不过…(我是来黑的
    9hills
        8
    9hills  
       2015-06-03 10:10:49 +08:00 via iPhone
    Java热起来,表示可以和C++刚正面
    neilwong
        9
    neilwong  
       2015-06-03 10:17:26 +08:00
    凭什么看不起我大js,来来来,楼主咱俩来撕逼
    fszaer
        10
    fszaer  
    OP
       2015-06-03 10:23:28 +08:00
    @neilwong
    @oott123
    ((( д)))淦啦,我明明在标题都说说js比java,怎么变成在黑js啦(捧读)
    ledzep2
        11
    ledzep2  
       2015-06-03 10:24:36 +08:00
    楼上真幽默. v8会把可以编译成native code的代码编译运行, 性能直逼native. java始终还是有个vm. 所以v8某些时候会快些.
    wy315700
        12
    wy315700  
       2015-06-03 10:31:08 +08:00
    不知道leetcode怎么统计的


    我们以前做OJ的时候,
    整个程序的执行时间不仅仅是你写的代码的运行时间,是整个命令的运行时间

    也就是说 如果是JAVA的话,是整个 javac Main.java 的时间,

    包含了 javac 程序本身加载,编译,运行等时间。

    所以除了C/C++是不计算编译的时间,是直接运行二进制的,其他的都要算上编译时间的,所以静态编译并没有什么优势。
    一般设置超时的时候,JAVA的时间是C的三倍。

    @9hills
    @fangjinmin
    @braineo
    @fszaer
    101
        13
    101  
       2015-06-03 10:47:17 +08:00
    说 V8 快的是忘了 Java 还有 JIT 吗?快不快上数据吧
    loryyang
        14
    loryyang  
       2015-06-03 11:16:33 +08:00
    我以前听别人介绍过,这个java运行时间包括启动jvm的时间
    正常java不可能会去频繁启动停止jvm的,所以这个时间没有意义
    Cloudee
        15
    Cloudee  
       2015-06-03 11:19:36 +08:00 via iPhone
    虚拟机启动慢,预热起来(方法执行一定次数才会jit等等)也需要时间
    nomoon
        16
    nomoon  
       2015-06-03 11:50:40 +08:00
    他们中间改过计算方法,现在java应该是能跑过脚本语言的。但是历史数据原因。。。你懂的。。。
    messyidea
        17
    messyidea  
       2015-06-03 12:18:40 +08:00 via Android
    应该是java读入比较慢吧
    fszaer
        18
    fszaer  
    OP
       2015-06-03 22:08:30 +08:00
    @loryyang
    @wy315700
    大概这是正解把......
    其实这种oj测试我觉得把编译时间去掉比较合理,特别是题目测试样本量相对较小的时候
    搞不好60~70%的时间都耗在编译上了
    erichuang1994
        19
    erichuang1994  
       2016-05-09 00:01:44 +08:00
    然而现在 leetcode 上 JAVA 就比 C 慢了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3004 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 13:16 PVG 21:16 LAX 05:16 JFK 08:16
    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