SIGN IN SIGN UP
Tencent / xLua UNCLAIMED

xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc.

2017-02-14 15:34:04 +08:00
## 目录说明
* UnitTest 单元测试用例
* PrefTest 性能测试用例
## 使用说明
* 把对应目录下的所有目录拷贝到Assets下比如你要执行单元测试用例把UnitTest下两个目录都拷贝到Assets下然后运行main.unity
* luajit版本比lua53版本性能要好很多打开HOTFIX_ENABLE或者THREAD_SAFT宏性能会略降因为会对所有C#调用lua的地方都会加上锁所以你要和其它方案对比的话用luajit版本测试并确认HOTFIX_ENABLE或者THREAD_SAFT没打开
## 性能用例的说明
* 用例和网上流行的不太一样,原因是:
* Unity API本身的开销会影响到测试结果。举个例子方案A的Lua调用C#函数开销是1ms方案B是2ms那么结论应该是A方案性能是B方案两倍但如果被调用C#函数本身耗时100ms那结论就是两个方案性能差不多甚至有时会因为误差得出B方案性能更好的结论
* 如果测试中包含重载函数,对比也是不恰当的,因为每个方案的生成代码对于重载判断的顺序不一定一样,不一样的时候,对比也意义不大;
* 测试Lua调用C#部分用例选择了Vector3这其实是错误的市面上大多方案的Vector3是完全在Lua测重新实现完全没有达到测试“Lua调用C#”的目的;
* xLua本质上做C#和lua之间的适配所以所有用例的设计原则都是被调用方无开销比如函数都是直接return
## 几个值类型的方法的性能说明
* 前面也提到其它方案的Vector3相类似的还有Vector2Vector4QuaternionColor等由于直接在lua测实现而xLua默认仍然是调用C#的实现测试这些类型的方法的话xLua性能相比会低很多
* 你可以选择在lua实现这些方法配合xlua.genaccessor性能可以达到同一个数量级。
* xLua一直坚持使用C#原生实现一年多的项目应用中也没有反馈因此而造成的性能问题应该性能是够用的如果真的出现不够用的情况选择在lua实现这块逻辑也是不恰当的应该直接在C#实现比较合适些