测试类

    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. CoreOS Hyper-V 安装

    CoreOS Hyper-V 安装, Install to disck 准备 安装镜像 https://coreos.com/releases/ 选择版本, 点 Browse Images, 下载以下 ...

  2. Oracle查询某段日期内某个时间段的数据

    示例: 查询最近一周12:30分到13:00这段时间内的订单量: SELECT * FROM T_ORDER O WHERE O.CREATEDATETIME BETWEEN SYSDATE AND ...

  3. WinForm开发之取送货管理1

    一.取送货管理项目需求 该系统的业务背景如下:客户是一个针织半成品生产加工作坊,有很多生产加工人员从客户工厂那里取走半成品,加工成成品后送回来.客户根据加工每种半成品的加工单价和完成数量,付费用给生产 ...

  4. .NET平台开发Mongo基础知识

    NoSQL简介 NoSQL相关的技术最近越来越受欢迎,Mongo本身就是基于NoSQL实现的.关于NoSQL你需要了解 什么是NoSQL NoSQL和传统的关系型数据库有什么区别 NoSQL的优缺点 ...

  5. pip 安装 lxml 出错

    用pip安装 lxml 老是出错,在公司安装了 wheel,从 http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 下载了lxml的whl包,pip ins ...

  6. RHEL7学习之NTP配置

    一,安装NTP [root@localhost ~]# yum install ntp Loaded plugins: product-id, subscription-manager This sy ...

  7. [erlang]一次erlcron崩溃引起的事故分析

    事故背景 由于误操作在erlcron设置了一个超过3个月后的定时任务.然后第二天之后发现每天的daily reset没有被执行,一些定时任务也没有被执行.瞬间感觉整个人都不好了,怎么无端端就不执行了呢 ...

  8. 基于现有数据库的Code First模式迁移更新数据库

    本文讨论的内容是基于EF4.1版本.文中谈论的现有的数据库不是由EF创建.本文假定你已经对Code First迁移有一定的了解,如果不了解Code First迁移更新数据库可以查看 文章涉及的主题如下 ...

  9. css3之文本新属性

                                                     

  10. 动态加载js文件

    由于最近在弄echarts,关于地图类的效果,但是全国地图整体的js文件太大了,加载很耗费资源,所以要根据不同省份加载不同地区的js地图, 于是就想的比较简单, var script = docume ...