如何比较LuaJIT和JavaScriptCore的性能,作为Objective-C桥接器的选择?

我正在为Objective-C <-> LuaJIT桥编写一些单元测试,目的是比较LuaJIT与JavaScriptCore的性能,并在某些特定任务上JS具有更好的执行时间时使测试失败。

什么任务?

为什么这么做?

我想回到游戏开发,并随着每个新版本的发布而更新LuaJIT,这样当测试失败时,我就可以回滚到以前的版本或执行必要的操作,以便在虚拟机中运行最快的Lua实现。

好吧……问题是什么?

测试随机失败,有时是LuaJIT最快,有时是JS。唯一想到的原因是垃圾回收器会影响执行时间。

有办法强制垃圾回收器对两个引擎的每个迭代都这样做吗?

另一个选择是有一个N个交互的样本,并找到两个执行时间的有限混合模型,表示脚本在“正常”模式下运行时的执行时间和当GC被激活时的执行时间,以相应地比较两个引擎的性能。

听起来很麻烦

也许吧,我只是想要一个杀死更慢脚本引擎的灵丹妙药,还有什么比将它们与OS X和iOS上JavaScript的本地实现进行比较更好的呢?

点赞