V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
SolidZORO
V2EX  ›  问与答

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

  •  
  •   SolidZORO · Dec 12, 2011 · 6060 views
    This topic created in 5250 days ago, the information mentioned may be changed or developed.
    28 replies    1970-01-01 08:00:00 +08:00
    napoleonu
        1
    napoleonu  
       Dec 13, 2011
    一个简单的web服务器,python只要3秒

    python -m SimpleHTTPServer

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


    硬件: Intel Core i7 [email protected](4 core, HyperThread), 12GB RAM
    操作系统: Microsoft Windows 7 64-bit

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

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

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

    如果你是一个游戏开发者,看到这组数据的时候,应该想都不用想就用JS引擎开发了,而不是ruby。
    est
        17
    est  
       Dec 13, 2011
    作者基本是用静态语言的思路在写动态语言。python能嵌套5层for,效率能不低吗?
    cngithub
        18
    cngithub  
       Dec 13, 2011
    作者关于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
        19
    VYSE  
       Dec 13, 2011
    @rechtar 没想这么多,NGINX也是C的,理论C实现效率更高吧。那么换成“没有C哪来PYTHON”
    keakon
        20
    keakon  
       Dec 13, 2011
    看到最下面的“楼主火星了”,我觉得很适合……

    有常识的人都不会在CPU为瓶颈的地方使用Python和Ruby……
    0bit
        21
    0bit  
       Dec 13, 2011
    我本来是想来吐槽@VYSE 那句“没C++哪来Python”的……想来想去,表示已无力吐槽
    VYSE
        22
    VYSE  
       Dec 13, 2011
    @0bit 更正后的“没有C哪来PYTHON”这句有任何问题么?
    0bit
        23
    0bit  
       Dec 13, 2011
    @VYSE 没有汇编哪来的C,没有机器语言哪来的汇编。010110的用机器语言去编,肯定效率最高,但是这样比较有意义吗?单纯的比较性能有意义吗?
    VYSE
        24
    VYSE  
       Dec 13, 2011
    @0bit “没有C哪来PYTHON”哪里有单纯比较性能的意思,是回复二楼拿PYTHON和C++比较。C是语言,PYTHON是C语言研发的解释器,就这么简单。
    上面我已经说了拿编译成机器码的语言和解释器比较不公平。
    “没有汇编哪来的C”这句,汇编是机器指令的注解形式,和C语言没有关系,可以说没有X86或其他ARCH哪来的C编译器,而不是C语言本身。
    0bit
        25
    0bit  
       Dec 13, 2011
    @VYSE 想了半天,先承认我说错了。我确实不是太了解,最早的C语言的编译器,是不是由汇编写的,有空得多看看历史去了。另外,我的主要的意思是,既然有的人都可以只直接比较执行效率,那么为什么就不能比较一下开发效率呢?难道就因为CPython的基础是C?那样的话,所有高级语言都给C跪下算了。
    VYSE
        26
    VYSE  
       Dec 13, 2011
    @0bit 有空多看看bootstrap概念,你确定C语言的编译器是汇编写的,不是bootstrap self compile?你确定70年代初的代码助记符是汇编?
    我哪里都没提到开发效率的问题,你怎么就直接比较开发效率了。一楼说PYTHON一个指令开HTTP SERVER,我说已有C程序HTTP SERVER,你怎么就联想到开发效率了?
    0bit
        27
    0bit  
       Dec 13, 2011
    @VYSE 我承认,确实是我理解错了。我就不继续再嘴硬反驳了。去看书去了,的确是更多的知识才能有更多的底气啊。
    VYSE
        28
    VYSE  
       Dec 13, 2011
    @0bit 不是谁错不错的问题,这种测试本来就是GEEK的玩具,谁有什么喜好肯定支持谁。
    我觉得争论至少比看书有意义,看书记不久,争论了解到的想记不住都难。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1126 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 18:13 · PVG 02:13 · LAX 11:13 · JFK 14:13
    ♥ Do have faith in what you're doing.