测试类

    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

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

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的更多相关文章

  1. 使用Lua脚本语言开发出高扩展性的系统,AgileEAS.NET SOA中间件Lua脚本引擎介绍

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  2. c# 动态执行脚本,相关的几个脚本引擎.

    Jint   嵌入式的javascript脚本支持引擎,一直都在更新,对各种方法支持也比较好,可以 C# 交互. https://github.com/sebastienros/jint Jurass ...

  3. Nmap源码分析(脚本引擎)

    Nmap提供了强大的脚本引擎(NSE),以支持通过Lua编程来扩展Nmap的功能.目前脚本库已经包含300多个常用的Lua脚本,辅助完成Nmap的主机发现.端口扫描.服务侦测.操作系统侦测四个基本功能 ...

  4. C#脚本引擎 CS-Script 之(二)——性能评测

    以下以一个简单的HelloWord程序为例,来分析csscript脚本引擎的性能. class HelloWorld { public void SayHello() { Console.WriteL ...

  5. C#脚本引擎 CS-Script 之(一)——初识

    最近在做新产品,这个产品需要满足不同项目对于系统的定制性数据处理需求,比如有的要统计一段时间内某开关打开关闭了多少次,有的要统计一段时间内空调的使用率,有的希望根据温度来控制空调的开还是关,有的则是希 ...

  6. 无法找到脚本*.VBS的脚本引擎解决办法

    当你在运行一些基于VBS脚本语言的文件时,系统可能报错.这时候可能是你的VBS脚本服务在注册表中出错了,原因可能是卸载或安装一些代码不规范的程序引起的.这里给出无法找到脚本引擎"vbscri ...

  7. [19/04/19-星期五] Java的动态性_脚本(Script,脚本)引擎执行JavaScript代码

    一.概念 Java脚本引擎是jdk 6.0之后的新功能. 使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的. Java脚本API是连接Jav ...

  8. Java_脚本引擎_02_在Idea中进行Nashorn的Debug

    一.前言 本文承接上一节:Java_脚本引擎_01_用法入门 这一节我们来看下怎么在idea中进行Nashorn的Debug ,又或者说怎么在Idea中进行js的Debug 注:idea本身就支持js ...

  9. C#脚本引擎RulesEngine

    当编写应用程序时,经常性需要花费大量的时间与精力处理业务逻辑,往往业务逻辑的变化需要重构或者增加大量代码,对开发测试人员很不友好. 之前在这篇文章说过,可以使用脚本引擎来将我们需要经常变化的代码进行动 ...

随机推荐

  1. 小心Java中封装类的值比较

    一般我们使用数值时,都是使用基本类型,如int.long等,但如果你喜欢使用Integer.Long的包装类,那有一点可就得注意了.先来看下这段代码: /** * * @author trytocat ...

  2. css 字间距、CSS字体间距、css 字符间距设置

    1.text-indent设置抬头距离css缩进 2.letter-spacing来设置字与字间距_字符间距离,字体间距css样式

  3. c#获取ip的方法cdn加速获取真实ip方法

    服务端://方法一HttpContext.Current.Request.UserHostAddress; //方法二HttpContext.Current.Request.ServerVariabl ...

  4. python json模块

    import json dic = {"name":"liao","age":18} data = json.dumps(dic) #转化为 ...

  5. vios 虚拟光驱 安装vioc

    一.VIO server 创建虚拟光驱 1 检查是否创建Library $lsrep 2 创建 VMLibrary :vg 和size都可以自己定义 $mkrep -sp rootvg -size 1 ...

  6. linux系统编程之错误处理机制

    在讲解liunx错误处理机制之前我们先来看一段代码: #include<sys/types.h> #include<sys/stat.h> #include<fcntl. ...

  7. Base64正反编码

    public class Base64 { private static char[] base64EncodeChars = new char[] { 'A', 'B', 'C', 'D', 'E' ...

  8. jQuery外链新窗口打开

    对于外链,为了留住用户在本站,我们通常会使用新窗口打开,你可以设置target="_blank".然而手动一个是麻烦,另一个则是有可能会遗漏,本文通过jQuery查询要点击的链接, ...

  9. Android多线程机制和Handler的使用

    参考教程:iMooc关于Handler,http://www.imooc.com/learn/267 参考资料:Google提供Android文档Communicating with the UI T ...

  10. navicat连接虚拟机(centos)中的mysql

    直接上方法: 首先配置CentOS下防火墙iptables规则: # vim /etc/sysconfig/iptables 向其中加入下列规则: -A INPUT -m state –state N ...