加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将Ruby转换为低级语言?

发布时间:2020-12-16 22:36:00 所属栏目:百科 来源:网络整理
导读:我有 Ruby的各种脚本: rails (symfony)ruby (php,bash)rb-appscript (applescript) 还可以用Ruby替换低级语言吗? 我用Ruby编写,并将其转换为java,c或c. 因为人们说在Ruby中有更多的性能关键任务,你可以用C扩展它.但是扩展这个词意味着你编写你刚才调用的Ru
我有 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所示,有可能使动态语言带来惊人的速度,但是您必须投入大量的资金和办公室才能充满聪明的程序员.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读