一个简单全局渲染性能测试(512x512像素,每像素10000个采样),C++ 1小时36分、Java 3小时18分、Python约18天、Ruby约351天。

2011-12-12 23:46:28 +08:00
 SolidZORO
差距居然达到那么大。 http://www.cnblogs.com/miloyip/archive/2010/07/07/languages_brawl_GI.html
5515 次点击
所在节点    问与答
28 条回复
napoleonu
2011-12-13 00:03:58 +08:00
一个简单的web服务器,python只要3秒

python -m SimpleHTTPServer

而C++却。。。。
mywaiting
2011-12-13 00:10:43 +08:00
这个......看来Ruby有点囧...........不过话说回来,动静态语言,这个本来就不是一个层次能够比较的,所以............
SolidZORO
2011-12-13 00:12:39 +08:00
@napoleonu 哈哈哈,说得也是。物尽其用就好,期待chromeOS有Playstation级作品的那一天,基于html app才是跨平台的绝佳方案。
skydark
2011-12-13 00:12:42 +08:00
当python代码遇到速度瓶颈,找出最关键的20%替换成C模块。
过早优化是万恶之源,这样做刚好能避免这一点。
VYSE
2011-12-13 00:12:56 +08:00
@napoleonu C++只要双击NGINX,BTW 没C++哪来PYTHON
SakagamiJun
2011-12-13 00:14:25 +08:00
2010-07-07 00:20 by Milo Yip, 24717 visits, 收藏, 编辑


硬件: Intel Core i7 920@2.67Ghz(4 core, HyperThread), 12GB RAM
操作系统: Microsoft Windows 7 64-bit

那一年,chrome的版本号才跑到5…
在windows下面ruby不是大大们都说蛋疼无比么…
haohaolee
2011-12-13 00:19:15 +08:00
那个时候ruby还没到1.9.x呢
napoleonu
2011-12-13 00:21:48 +08:00
@VYSE 哈哈,我不知道怎么说了哈。CPU是人脑设计的,不知道人脑运输速度是不是就要比CPU牛逼

我只是想说这些比较好无聊。
VYSE
2011-12-13 00:33:49 +08:00
@napoleonu Python也是人脑设计,不是C++设计的。
这种就看写代码的来优化了,不同语言高效的代码根本不能照搬,C++的smallpt的确极其精炼,换到解释语言上肯定没法比,看JAVA都很快就不用说了,不编译时间消耗太悬殊。
xiluo
2011-12-13 00:46:36 +08:00
这些实验对比数据只有xx论文才用到。旦疼
AntiGameZ
2011-12-13 01:00:21 +08:00
拿人民币拧螺丝,怕是搞坏1万张100块大钞,也没什么用吧?
funcman
2011-12-13 02:06:08 +08:00
原来V8比LuaJIT还快。
killpanda
2011-12-13 02:15:51 +08:00
比起来没意义吧?
rechtar
2011-12-13 08:12:42 +08:00
@VYSE 三个主流的 Python 实现 CPython、Jython、IronPython 分别是用 C、Java、C# 写的,跟 C++ 有半毛钱关系啊 =。=
SolidZORO
2011-12-13 08:40:54 +08:00
@xiluo @killpanda 按作者原话就是【首先,要说一句,Google太强了,难以想像JsChome的渲染时间仅是IC++的16.12倍,C#的4.94倍。我有信心用JavaScript继续写图形、物理方面的博文了。】

我的理解是,测试起来其实是有意义的,因为他给那些要用web语言写大型游戏的人一个参考,证明了JS的确可行,特别是chrome的V8上跑渲染已经非常不错了。

如果你是一个游戏开发者,看到这组数据的时候,应该想都不用想就用JS引擎开发了,而不是ruby。
levn
2011-12-13 09:07:29 +08:00
est
2011-12-13 09:27:02 +08:00
作者基本是用静态语言的思路在写动态语言。python能嵌套5层for,效率能不低吗?
cngithub
2011-12-13 09:39:27 +08:00
作者关于Ruby的错误很多。

1。不应采用ruby1.9.1,请改为ruby1.9.2或者ruby1.9.3。

2。采用windows测试Ruby?

3。已经有人纠正过他的语法错误了:


楼主的Ruby实现有错误,第162行应为
"isRR = (isUseRR and rand < obj.maxC)"
(and不同于&&,结合优先级比等号更低)

另外,Python版第201行最好改成
"samps = int(int(sys.argv[1]) / 4)"
否则在Python3下有问题。

我的测试结果如下(每像素8次采样):
Ruby 1.8.7p249 1494.3s
Ruby 1.9.1p378 666.5s
Ruby 1.9.2dev 458.0s
Python 2.6.5 677.9s
Python 3.1.2 445.1s

可见Ruby性能并不差。并且另一方面,Ruby 1.9.2的
内存占用只是Python 3.1.2的一半多一点。
VYSE
2011-12-13 12:31:27 +08:00
@rechtar 没想这么多,NGINX也是C的,理论C实现效率更高吧。那么换成“没有C哪来PYTHON”
keakon
2011-12-13 14:19:10 +08:00
看到最下面的“楼主火星了”,我觉得很适合……

有常识的人都不会在CPU为瓶颈的地方使用Python和Ruby……

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

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

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

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

© 2021 V2EX