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

2015-06-03 09:28:34 +08:00
 fszaer

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

6032 次点击
所在节点    问与答
19 条回复
df4VW
2015-06-03 09:30:34 +08:00
Cuz its nodejs 0.12.3
fangjinmin
2015-06-03 09:31:04 +08:00
可能是因为JVM太慢了。
braineo
2015-06-03 09:33:06 +08:00
虚拟机启动时间?
tabris17
2015-06-03 09:40:28 +08:00
像LeetCode这种平台,Python,Ruby环境支持安装第三方包/组件么?
morethansean
2015-06-03 09:44:03 +08:00
V8也是有点水平的好吗!
Narcissu5
2015-06-03 09:49:26 +08:00
估计是HotSpot的原因,java只有在有一定运行信息之后才开始优化
oott123
2015-06-03 09:51:39 +08:00
难道不是本来就比不过…(我是来黑的
9hills
2015-06-03 10:10:49 +08:00
Java热起来,表示可以和C++刚正面
neilwong
2015-06-03 10:17:26 +08:00
凭什么看不起我大js,来来来,楼主咱俩来撕逼
fszaer
2015-06-03 10:23:28 +08:00
@neilwong
@oott123
((( ゚д゚)))淦啦,我明明在标题都说说js比java,怎么变成在黑js啦(捧读)
ledzep2
2015-06-03 10:24:36 +08:00
楼上真幽默. v8会把可以编译成native code的代码编译运行, 性能直逼native. java始终还是有个vm. 所以v8某些时候会快些.
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
2015-06-03 10:47:17 +08:00
说 V8 快的是忘了 Java 还有 JIT 吗?快不快上数据吧
loryyang
2015-06-03 11:16:33 +08:00
我以前听别人介绍过,这个java运行时间包括启动jvm的时间
正常java不可能会去频繁启动停止jvm的,所以这个时间没有意义
Cloudee
2015-06-03 11:19:36 +08:00
虚拟机启动慢,预热起来(方法执行一定次数才会jit等等)也需要时间
nomoon
2015-06-03 11:50:40 +08:00
他们中间改过计算方法,现在java应该是能跑过脚本语言的。但是历史数据原因。。。你懂的。。。
messyidea
2015-06-03 12:18:40 +08:00
应该是java读入比较慢吧
fszaer
2015-06-03 22:08:30 +08:00
@loryyang
@wy315700
大概这是正解把......
其实这种oj测试我觉得把编译时间去掉比较合理,特别是题目测试样本量相对较小的时候
搞不好60~70%的时间都耗在编译上了
erichuang1994
2016-05-09 00:01:44 +08:00
然而现在 leetcode 上 JAVA 就比 C 慢了

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

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

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

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

© 2021 V2EX