论坛首页 编程语言技术论坛

XRuby 0.3.0发布了!

浏览 6475 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-08-09  
XRuby 0.3.0发布了!
发布信息:
http://xruby.blogspot.com/2007/08/xruby-030-released.html
JavaEye镜像:
http://xruby.iteye.com/blog/110336

这个版本最大的变化是,受到JRuby中Java 5相关讨论的启发,加入了以Annotation绑定Java方法和Ruby方法,简化了代码的编写。现在不必像之前那样定义Wrapper,注册方法了,只要像下面这样写代码,剩下的工作XRuby帮你完成。
@RubyLevelClass(name="String")
public class RubyString {
    @RubyLevelMethod(name="to_f")
    public RubyFloat to_f() {
        ...
    }
}

相关内容我在自己的blog上做了一个小结:
http://dreamhead.blogbus.com/logs/7548397.html

另外,我们通过了更多的单元测试,向着更完整的Ruby实现进发着!

我们始终欢迎对编译器和动态语言感兴趣的朋友,在这里,总有一些有趣的问题等着我们解决。
   发表时间:2007-08-10  
XRuby的速度怎么样啊?
0 请登录后投票
   发表时间:2007-08-11  
在benchmark上表现很好,这里有一份老的数据:
http://xruby.iteye.com/blog/69937

现在的版本比这老数据又提高了很多,除了个别cases,基本都比c ruby 1.8.6快很多.但比将来的YARV(ruby 2.0)还有差距.

运行实际程序和benchmark是有区别的,我现在发现test::unit在xurby下比cruby慢.当然有可能只是个别库函数实现的不好造成的,还没有来得及研究.

由于很多工作要做,优化做得很少,所以现在这个数据我算是比较满意了.其实一开始甚至有些惊奇,也算是证明了编译成java bytecode是一条确实可行的路.

0 请登录后投票
   发表时间:2007-08-11  
客观的说,加入Annotation多多少少会对性能有一点影响。因为某些代码原本可以在Method Wrapper中就直接返回,而现在,统一转到类中去处理,也就是要多一次函数调用。不过,相对于获得的优势而言,这点损失是值得的。事实上,正是因为转到了类中进行处理,有些Method Wrapper中通过函数获取的字段,反而变成了直接对字段的访问,这样是有助于性能提升的。

XRuby的builtin库实现许多有不少是直接借助Java类库完成的,比如String中就有不少代码是借助java.lang.String的特性完成的。但实际上,这么做会有一些性能的损失,因为我们都知道Java的String是不变的,所以,每次操作的结果都是产生一个新的对象,这样的话就会造成一些性能上的损失。在XRuby 0.3.0的发布版本中,我修改了部分代码的实现,直接对char进行操作,性能有了一个比较明显的提升。如果有兴趣的话,可以对比一下,之前版本的实现。

其实类似的问题,在XRuby中还有不少,每次修改这种实现,在解决问题的同时,也是一个加深对底层实现理解的过程。这也就是我为什么会说,总有一些有趣的问题等着我们解决。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics