用Java编写的算法应该比用JRuby编写的算法快,对吗?
但是,如果我用Java编写算法然后从JRuby调用它,我还能获得java的性能优势吗?
我问这个是因为我正在为我的JRuby on Rails应用程序编写一个非常复杂的实用程序类,需要选择是用Java还是用JRuby来实现它。
所以,如果我使用以下代码:
class UtilitySampleWrapper
include Java
require 'utility.jar' #could also use .js class files if that makes a difference
def initialize
@p = Utility.new #this is the java utility class
end
end
在Utility类的@p对象中运行的任何代码是否都可以在纯java中运行并具有所有的速度优势?
如果我打电话
@p.iterate(50)
Utility类的iterate函数是在纯Java中运行,然后将其结果返回到我的JRuby代码吗?
谢谢!
答案 0 :(得分:3)
用Java编写的算法应该比用JRuby编写的算法快,对吗?
这取决于您编写Java版本的程度。对于某些算法,JRuby编译器可以发出比Java编译器为函数等效的Java程序发出的运行速度更快的字节码。
理论上可能 。但一般来说,我希望手动优化的Java算法比手动优化的JRuby算法运行得更快,因为:
我不知道差异有多大。显然,这将取决于进行手部优化的人/人的技能。
但是,如果我用Java编写算法然后从JRuby调用它,我还能获得java的性能优势吗?
可能是的,但有一些可能的原因可能不是这种情况:
在开始用Java重新编码JRuby代码之前,你应该做一些测试,看看这是否值得一试;例如应用程序运行得足够快吗?然后,您应该分析应用程序以查看应用程序是否确实将所有时间都花在了算法上。最后,您应该看看是否可以在JRuby中优化算法。 (例如,如果你可以用O(N**2)
JRuby算法替换O(N)
JRuby算法,那么这比用Java重新编码原始算法要好。)