我有
Ruby的各种脚本:
rails (symfony) ruby (PHP,bash) rb-appscript (applescript)
还可以用Ruby替换低级语言吗?
我用Ruby编写,并将其转换为java,c或c.
因为人们说在Ruby中有更多的性能关键任务,你可以用C扩展它.但是扩展这个词意味着你编写你刚才调用的Ruby代码的C文件.我想知道,我可以使用Ruby并将其转换为C源代码,将其编译为机器代码.然后我可以用C扩展它,但是在Ruby代码中.
这就是这篇文章.在Ruby中编写所有内容,但可以获得C(或Java)的性能.
第二个优点是您不必学习其他语言.
就像HipHop for PHP一样.
是否有实现?
解决方法
这样的编译器将是一项巨大的工作.即使它的工作,它仍然必须
>包括ruby运行时
>包括标准库(不是用于性能而是用于可用性)
>允许元编程
>做动态调度
>等
所有这些都会造成巨大的运行时惩罚,因为C编译器既不能理解也不能优化这样的抽象. Ruby和其他动态语言不仅较慢,因为它们被解释(或编译为字节码,然后被解释),也是因为它们是动态的.
例
在C中,大多数情况下可以调用方法调用,因为编译器知道这个方法的确切类型.如果子类型被传递,该方法仍然不能改变,除非它是虚拟的,在这种情况下,使用一个非常有效的查找表.
在Ruby中,类和方法可以随时以任何方式进行更改,因此每次都需要(相对昂贵的)查找.
像Ruby,Python或Perl这样的语言有很多功能,这些功能很简单,而且大多数相关程序大多依赖于这些功能(当然这些功能非常有用!),因此无法将其删除或内联.
简单地说:动态语言很难优化,只需要做一个解释器做的事情,编译到机器代码就不会被切断.如V8所示,有可能使动态语言带来惊人的速度,但是您必须投入大量的资金和办公室才能充满聪明的程序员.