V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fszaer
V2EX  ›  问与答

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

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

    我现在刷题大概才刷了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   ·   实用小工具   ·   1013 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 21:06 · PVG 05:06 · LAX 13:06 · JFK 16:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.