熱更新指令碼C#light,ulua,Scorpio效能比較

來源:互聯網
上載者:User

標籤:android   http   io   ar   os   sp   java   for   on   

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

熱更新指令碼C#light,ulua,Scorpio效能比較

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.