测试了几款 C# 脚本引擎 , Jint , Jurassic , Nlua, ClearScript

测试类

https://www.cnblogs.com/jexus/p/4781997.html

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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 + " 毫秒");
    }
}

测试脚本 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
t.time1();                              //计时开始
htm = t.read('d:/nn2log.txt')
 
forvar 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<br>
t.demo2()                             //测试是否支持 默认参数
t.demo2('ddddddddddddd')<br><br>t.demo3(111)                        //测试是否支持 多方法      这个很重要,JS 调用 C#方法的时候,C# 的很多方法都是多方法定义的..如果不支持 可能 不能调用成功.<br>t.demo3('dddddddd')<br>

 

 

 

脚本测试结果 

Jint   支持 params   , 不支持默认参数,  不支持多方法,    

Jurassic   支持 params   , 不支持默认参数,  支持多方法,   

Nlua        支持 params   , 支持默认参数,  支持多方法,   

ClearScript        支持 params   , 支持默认参数,  支持多方法,   

ClearScript        是使用 "JScriptEngine" 方式测试的, 没有使用V8引擎, mono 上好像使用不了,就没有测试呢.

 

性能方面, 大概的是    

Nlua  or  Jurassic    >   ClearScript  or   Jint   

大概只测试几个 字符串操作 和 正则表达式方面的循环操作,测试不算全面.

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上面.

posted @ 2024-11-25 15:46  China Soft  阅读(3)  评论(0编辑  收藏  举报