zoukankan      html  css  js  c++  java
  • 热更新脚本C#light,ulua,Scorpio性能比较

    http://www.unity蛮牛.com/thread-32861-1-1.html

    测试环境: unity4.5.2  三个脚本全是源码导入  PC :处理器 Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz 3.60GHz  内存: 8.00GB  系统 : Windows 7 64位先贴下源码:(注:cls的作者说 cls脚本作用域判断比较厉害 所以利用脚本里面的for循环 可能有点损耗cls的测试结果 更多测试结果请下载源码自行测试)
                Stopwatch watch = null;
                {
                    watch = Stopwatch.StartNew();
                    Script env = new Script();
                    env.LoadLibrary();
                    env.PushAssembly(typeof(GameObject).Assembly);
                    var token = env.LoadString(m_Scorpio);
                    m_ScorpioRuntime = string.Format("Scorpio 耗时:{0} ms  返回值 : {1}", watch.ElapsedMilliseconds, token);
                }
                {
                    watch = Stopwatch.StartNew();
                    LuaState env = new LuaState();
                    var token = env.DoString(m_Lua);
                    m_LuaRuntime = string.Format("Lua 耗时:{0} ms  返回值 : {1}", watch.ElapsedMilliseconds, token != null && token.Length > 0 ? token[0] : "null");
                }
                {
                    CLS_Environment env = new CLS_Environment(new ScriptLogger());
                    env.RegType(new RegHelper_Type(typeof(GameObject)));
                    var token = env.ParserToken(m_CLS);
                    var expr = env.Expr_CompilerToken(token, false);
                    watch = Stopwatch.StartNew();
                    var value = env.Expr_Execute(expr, null);
                    m_CLSRuntime = string.Format("cls 耗时:{0} ms  返回值 : {1} (因听说CLS解析很慢 故只计算Expr_Execute的时间)", watch.ElapsedMilliseconds, value);
                }
    Test1: 测试脚本自运算效率(测试结果:  lua的自运算能力是最快的 毕竟是c实现的底层 而且号称世界最快的脚本引擎)
    <ignore_js_op> 

    Test2:测试调用c#函数以及创建对象的效率(测试结果:ulua在调用c#函数的时候毕竟要先把对象序列化成table调用 所以比较耗时  sco和cls是直接调用的反射或者快速反射一类的 没有序列化的过程 所以可以弥补一些自运算带来的损失 )

    <ignore_js_op> 

    Test3:测试调用c#深层变量的效率(测试结果:ulua在深层调用上没有想象的 掉的厉害  应该有对一个Type的序列化有缓存)
    <ignore_js_op> 



    结果:
    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的操作,这些代码三种脚本的效率都无伤大雅
              关键在个人的喜好! 动态脚本和静态脚本各有各的好处!


    最后奉上测试源码:https://github.com/qingfeng346/ScriptTestor 
    Scorpio-CSharp源码地址:https://github.com/qingfeng346/Scorpio-CSharp 
    QQ群讨论:245199668

  • 相关阅读:
    HDU 2116 Has the sum exceeded
    HDU 1233 还是畅通工程
    HDU 1234 开门人和关门人
    HDU 1283 最简单的计算机
    HDU 2552 三足鼎立
    HDU 1202 The calculation of GPA
    HDU 1248 寒冰王座
    HDU 1863 畅通工程
    HDU 1879 继续畅通工程
    颜色对话框CColorDialog,字体对话框CFontDialog使用实例
  • 原文地址:https://www.cnblogs.com/123ing/p/4118070.html
Copyright © 2011-2022 走看看