我是Ruby和JRuby的新手,我试图在Ruby中实现多线程代码,并且知道GIL不允许我的代码并行运行然后我转移到JRuby并实现相同的代码并执行JRuby的时间比Ruby要好得多。我研究过JRuby线程与Java中的线程非常类似,所以我在Java中的代码中也实现了相同的功能,我在Java中的性能(执行时间)比JRuby快了近10倍,有人可以解释一下我的原因为了这?提前致谢
答案 0 :(得分:0)
即使方法调度成本较低,也存在Ruby的动态特性,例如:当你在Java上a+1
时,它会在Ruby中a+1
添加整数,这是一个额外的溢出检查等。
你的问题非常普遍,我们也不知道你做了什么样的表现,但最终当你做'真实世界'的工作时,如果你觉得某些部分是值得快10倍,您仍然可以选择在“原生”Java中重新制作该片段。