测试环境:unity4.5.2三个脚本全是源码导入PC:处理器Intel(R)Core(TM)i5-CPU 3.20GHz3.60GHz内存:8.00GB系统:Windows位先贴下源码:(注:cls的作者说cls脚本作用域判断比较厉害所以利用脚本里面的for循环可能有点损耗cls的测试结果更多测试结果请下载源码自行测试)Stopwatchwatch=null;{watch=Stopwatch.StartNew();Scriptenv=newScript();env.LoadLibrary();env.PushAssembly(typeof(GameObject).Assembly);vartoken=env.LoadString(m_Scorpio);m_ScorpioRuntime=string.Format(Scorpio耗时:{0}ms返回值:{1},watch.ElapsedMilliseconds,token);}{watch=Stopwatch.StartNew();LuaStateenv=newLuaState();vartoken=env.DoString(m_Lua);m_LuaRuntime=string.Format(Lua耗时:{0}ms返回值:{1},watch.ElapsedMilliseconds,token!=nulltoken.Length0?token[0]:null);}{CLS_Environmentenv=newCLS_Environment(newScriptLogger());env.RegType(newRegHelper_Type(typeof(GameObject)));vartoken=env.ParserToken(m_CLS);varexpr=env.Expr_CompilerToken(token,false);watch=Stopwatch.StartNew();varvalue=env.Expr_Execute(expr,null);m_CLSRuntime=string.Format(cls耗时:{0}ms返回值:{1}(因听说CLS解析很慢故只计算Expr_Execute的时间),watch.ElapsedMilliseconds,value);}Test1:测试脚本自运算效率(测试结果:lua的自运算能力是最快的毕竟是c实现的底层而且号称世界最快的脚本引擎)Test2:测试调用c#函数以及创建对象的效率(测试结果:ulua在调用c#函数的时候毕竟要先把对象序列化成table调用所以比较耗时sco和cls是直接调用的反射或者快速反射一类的没有序列化的过程所以可以弥补一些自运算带来的损失)Test3:测试调用c#深层变量的效率(测试结果:ulua在深层调用上没有想象的掉的厉害应该有对一个Type的序列化有缓存)结果:ulua在自运算比较多的情况下还是很占优势的毕竟是c语言的底层而且熟知lua的人很多论坛,教程都不少在入门方面还是很占优势的缺点是出了BUG比较麻烦,而且出了BUG大多都是内存方面的会导致应用程序直接崩溃BUG不好追踪平台方面支持Windows,android,IOS不支持WP如果要做WP版本估计要费一番功夫cls语法同c#优势很明显如果怕某一块代码效率不行或者相对比较稳定不多动的代码可以直接转成c#效率立马就恢复了而且不用担心出BUG而且是c#语言写的出了问题也能快速定位(平台支持Windows,Andoird,IOS,WP等要发布别的平台还是比较方便的)缺点效率好像有点问题sco测试结果效率还行,源码工程比较小,dll支持72K源码很容易看懂有点工作经验的有个半天应该就可以看完了而且是c#语言写的出了问题也能快速定位(平台支持Windows,Andoird,IOS,WP等要发布别的平台还是比较方便的)缺点语法类似javascript而且有部分语法不相同语言基础人数比较少总结:三种脚本各有各的优势,毕竟只是脚本,不用太在乎效率,也不会有人拿脚本写一个游戏,只是用来做一些配置还有UI的操作,这些代码三种脚本的效率都无伤大雅关键在个人的喜好!动态脚本和静态脚本各有各的好处!最后奉上测试源码:北京治疗白癜风最有效的医院北京哪家白癜风医院便宜点转载请注明原文网址:http://www.helimiaopu.com/hjpz/1181.html |