fszaer
V2EX  ›  问与答

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

  •  
  •   fszaer · Jun 3, 2015 · 7005 views
    This topic created in 4171 days ago, the information mentioned may be changed or developed.

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

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


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

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

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

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

    @9hills
    @fangjinmin
    @braineo
    @fszaer
    101
    101
    Jun 3, 2015
    13
    说 V8 快的是忘了 Java 还有 JIT 吗?快不快上数据吧
    loryyang
    loryyang
    Jun 3, 2015
    14
    我以前听别人介绍过,这个java运行时间包括启动jvm的时间
    正常java不可能会去频繁启动停止jvm的,所以这个时间没有意义
    Cloudee
    Cloudee
    Jun 3, 2015 via iPhone
    15
    虚拟机启动慢,预热起来(方法执行一定次数才会jit等等)也需要时间
    nomoon
    nomoon
    Jun 3, 2015
    16
    他们中间改过计算方法,现在java应该是能跑过脚本语言的。但是历史数据原因。。。你懂的。。。
    messyidea
    messyidea
    Jun 3, 2015 via Android
    17
    应该是java读入比较慢吧
    fszaer
    fszaer
    OP
    Jun 3, 2015
    18
    @loryyang
    @wy315700
    大概这是正解把......
    其实这种oj测试我觉得把编译时间去掉比较合理,特别是题目测试样本量相对较小的时候
    搞不好60~70%的时间都耗在编译上了
    erichuang1994
    erichuang1994
    May 9, 2016
    19
    然而现在 leetcode 上 JAVA 就比 C 慢了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3063 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 11:16 · PVG 19:16 · LAX 03:16 · JFK 06:16
    ♥ Do have faith in what you're doing.