Hello!
2014-04-08 5:26 GMT-07:00 liuxinglong88:
> 看jit.log发现代码很多地方都是因为使用了pairs函数导致不能被jit。借助春哥的lj-gc-objs.sxx看到只有
> 5 trace objects: max=840, avg=339, min=160, sum=1696 (in bytes)
> 是不是代表我几乎没用上luajit的特性?
> 既然pairs这类函数不能被jit编译,那有什么方法能避开pairs,使代码能够被jit编译?
>
遍历哈希表的 pairs() 函数和相关字节码(ISNEXT 和 ITERN)尚不能被 JIT 编译,见
http://wiki.luajit.org/NYI
我们公司(CloudFlare)即将赞助的 LuaJIT v2.1 第四期的开发工作中包括了编译这些原语。幸运的话,Mike Pall
应该会在未来几个月内实现。
在此之前,建议在热代码路径上尽量避免遍历哈希表,而改用 ipairs() 之类的结构对 Lua table 的数组部分进行遍历。
Regards,
-agentzh