測試了幾款 C# 指令碼引擎 , Jint , Jurassic , Nlua, ClearScript

來源:互聯網
上載者:User

標籤:

測試類別

    public class Script_Common    {        public string read(string filename)        {            return System.IO.File.ReadAllText(filename);        }        public void log(object obj)        {            Console.WriteLine(obj.GetType() + " - " + obj);        }        public void demo(params object[] items)        {            log(string.Join(" - ", items));        }        public void demo2(string def = "ddddddddddd")        {            log(def);        }        public void demo3(string val)        {            log(val);        }        public void demo3(int val)        {            log(val);        }        public Regex Regex(string pattern)        {            return new Regex(pattern);        }        public Match Match(string input,  string pattern)        {            return System.Text.RegularExpressions.Regex.Match(input, pattern);        }        System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();          public void time1()        {            log("計時開始 :");            stopwatch.Restart();        }        public void time2()        {            stopwatch.Stop();            log("記時結束 : " + stopwatch.ElapsedMilliseconds + " 毫秒");        }    }

測試指令碼 

t.time1();                              //計時開始htm = t.read(‘d:/nn2log.txt‘)for( var i = 0 ; i < 10000; i++){    var r = new RegExp(‘[a-z]+‘);    htm += r.exec(htm).length}t.time2();                              //計時結束t.log(htm.length)t.demo(11,22,33,44,55)       //測試是否支援 params
t.demo2() //測試是否支援 預設參數t.demo2(‘ddddddddddddd‘)

t.demo3(111) //測試是否支援 多方法 這個很重要,JS 調用 C#方法的時候,C# 的很多方法都是多方法定義的..如果不支援 可能 不能調用成功.
t.demo3(‘dddddddd‘)

 

 

 

指令碼測試結果 

Jint   支援 params   , 不支援預設參數,  不支援多方法,    

Jurassic   支援 params   , 不支援預設參數,  支援多方法,   

Nlua        支援 params   , 支援預設參數,  支援多方法,   

ClearScript        支援 params   , 支援預設參數,  支援多方法,   

ClearScript        是使用 "JScriptEngine" 方式測試的, 沒有使用V8引擎, mono 上好像使用不了,就沒有測試呢.

 

效能方面, 大概的是    

Nlua  or  Jurassic    >   ClearScript  or   Jint   

大概只測試幾個 字串操作 和 Regex方面的迴圈操作,測試不算全面.

ClearScript 在使用JS的 RegExp 的時候效能是最好的,  ,但是加了一句 C#的 var rr = t.Regex( ‘[a-z]+ ‘)  後效能就很不好,不知道為啥. 

項目維護方面.

Nlua  or  ClearScript  or  Jint   >  Jurassic      

Nlua  or  ClearScript  or  Jint   這3個一直都在更新維護

Jurassic  有2年都沒有更新了, 但是測試後感覺還是很不錯,  相容性+ , 效能 也還行, 

 

相容性方面 

Nlua or  jint or  Jurassic    > ClearScript  

Nlua  需要調用2-3個DLL, 多平台支援..IOS,LINUX ,windows

Jint     Jurassic     都是一個DLL,使用純C#寫的, 相容性應該還行, Linux 上面沒有測試過, 不過看了 Mono 的文檔,應該是支援的.

ClearScript   使用JScript  模式只有一個DLL就夠了,但是好像調用了系統介面, 跨平台不知道怎麼樣,   V8模式 需要調用 2-5個DLL, 而且V8引擎是用VS2013編寫的.還需要安裝VC運行庫...感覺引擎還是用C#寫比較好,異常捕獲呀那些的都方便一些.

 

 

 

http://www.okbt.net/ 磁力搜尋引擎,使用C# + Python 開發. Aspx運行在 Linux上面.

 

測試了幾款 C# 指令碼引擎 , Jint , Jurassic , Nlua, ClearScript

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.