LuaJ 调用java方法性能研究
先简单写一下;
lua调用java的方法,在luaJ中有两种。
1 使用官方提供的luaJava库
local ins = luajava.newInstance( "com.test.lj.TestClass");
ins:test()
2 自己绑定方法,采用类似原版lua的方式将方法
local ins = TestClass.new() --new方法自己绑定 ins:test()
哪种方法好?
结论:
令人惊讶的是,luajava库反射调用的性能在某些情况下,竟然比java原生绑定要快。
1 在对象方法数比较少的情况下,luajava生成的类的方法执行速度比java绑定要快一点,但基本一样。
2 在对象方法数多多情况下(复杂对象),luajava生成的类的执行速度比java绑定慢(可能是绑定了不相关的方法),我的一个测试对象执行结果,luajava比java的速度大概是 1.5 : 1
3 创建对象的速度上,java绑定远优于luajava,这个基接近2:1的关系了;
选择建议:
如果是偶然使用的一个对象,建议使用luajava,方便快捷,速度也不差
如果是经常new的对象或复杂的对象(但是实际只使用部分方法)建议用java绑定
(如果有需要,留言;我把测试代码放上来)