有同学知道原因吗?预编译可以加快启动速度哦。甚至还可以保护源码
先问有没有,再问为什么。 编译到字节码,Ruby 作为这么一个灵活的语言,不可能有很好的办法去保护源码。 要不然连反射和元编程都做不了了。 Python 和 Java 和.NET 都是,分分钟反编译,而且有些时候反编译出来的代码比你原来写的还漂亮(doge
最初的 YARV 可以预编译的,但是由于字节码的设计还没成熟,而且从源码到字节码的编译其实速度很快,就没开放。
现在的 Ruby 2.3 又可以预编译到字节码啦
File.write 'foo.rbc', RubyVM::InstructionSequence.compile(File.read 'foo.rb').to_binary
载入
RubyVM::InstructionSequence.load_from_binary(File.binread 'foo.rbc').eval
如果你有很多代码 (例如 10M 那么多), 觉得载入太慢,或者你不想别人容易的看到源代码,可以把它预编译到字节码。
执行速度是没有差别的
#7 楼 @lilijreey 我并没有说不能编译到字节码。 倒不如说我第一句话就是告诉你可以编译到字节码的。
后文我说的是编译到字节码并不能保护源代码。 请审题。