测试了几款 C# 脚本引擎 , Jint , Jurassic , Nlua, ClearScript
测试类
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的更多相关文章
- 使用Lua脚本语言开发出高扩展性的系统,AgileEAS.NET SOA中间件Lua脚本引擎介绍
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- c# 动态执行脚本,相关的几个脚本引擎.
Jint 嵌入式的javascript脚本支持引擎,一直都在更新,对各种方法支持也比较好,可以 C# 交互. https://github.com/sebastienros/jint Jurass ...
- Nmap源码分析(脚本引擎)
Nmap提供了强大的脚本引擎(NSE),以支持通过Lua编程来扩展Nmap的功能.目前脚本库已经包含300多个常用的Lua脚本,辅助完成Nmap的主机发现.端口扫描.服务侦测.操作系统侦测四个基本功能 ...
- C#脚本引擎 CS-Script 之(二)——性能评测
以下以一个简单的HelloWord程序为例,来分析csscript脚本引擎的性能. class HelloWorld { public void SayHello() { Console.WriteL ...
- C#脚本引擎 CS-Script 之(一)——初识
最近在做新产品,这个产品需要满足不同项目对于系统的定制性数据处理需求,比如有的要统计一段时间内某开关打开关闭了多少次,有的要统计一段时间内空调的使用率,有的希望根据温度来控制空调的开还是关,有的则是希 ...
- 无法找到脚本*.VBS的脚本引擎解决办法
当你在运行一些基于VBS脚本语言的文件时,系统可能报错.这时候可能是你的VBS脚本服务在注册表中出错了,原因可能是卸载或安装一些代码不规范的程序引起的.这里给出无法找到脚本引擎"vbscri ...
- [19/04/19-星期五] Java的动态性_脚本(Script,脚本)引擎执行JavaScript代码
一.概念 Java脚本引擎是jdk 6.0之后的新功能. 使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的. Java脚本API是连接Jav ...
- Java_脚本引擎_02_在Idea中进行Nashorn的Debug
一.前言 本文承接上一节:Java_脚本引擎_01_用法入门 这一节我们来看下怎么在idea中进行Nashorn的Debug ,又或者说怎么在Idea中进行js的Debug 注:idea本身就支持js ...
- C#脚本引擎RulesEngine
当编写应用程序时,经常性需要花费大量的时间与精力处理业务逻辑,往往业务逻辑的变化需要重构或者增加大量代码,对开发测试人员很不友好. 之前在这篇文章说过,可以使用脚本引擎来将我们需要经常变化的代码进行动 ...
随机推荐
- 调用 WebService 浏览器提示 500 (Internal Server Error) 的原因及解决办法
在 ASP.NET 开发中,WebService部署成站点之后,如果在本地测试WebService可以运行,在远程却显示“测试窗体只能用于来自本地计算机的请求”或 者"The test fo ...
- jQuery动画特效笔记
show().hide().fadeIn().fadeOut().slideDown.slideUp.slideToggle()都接受可选的时长和回调参数(选项对象参数). toggle(durati ...
- net软件自动生成开发编程框架编程机器人
有一个.net自动生成平台(编程机器人)推荐给大家,常规几天十几天的工作,机器人几分钟搞定,不写一行代码,留下大把休闲时光,适应于聪明人:不想太累的程序员(看看风景泡泡妞),不想多请人的老板(有限资金 ...
- iOS开发-automaticallyAdjustsScrollViewInsets属性
iOS开发-automaticallyAdjustsScrollViewInsets属性 Available in iOS 7.0 and later. 简单点说就是automaticallyAdju ...
- Backbone.js
Backbone.js是一套JavaScript框架與RESTful JSON的應用程式介面.也是一套大致上符合MVC架構的編程範型.Backbone.js以輕量為特色,只需依賴一套Javascrip ...
- c# 调用 matlab
如果本机没有安装Matlab 需要安装一个叫 MCRInstaller 的东西 运行环境 如果安装后 需要把D:\MATLAB\R2013a\bin\win64; 写入环境变量 (路径根据实际情况改 ...
- pl/sql中文乱码问题解决
最近用pl/sql连我们公司的数据库,发现表里的中文数据都是“???”,上网查了一下,发现是数据库的编码格式和pl/sql的编码格式不统一造成的. 解决方法非常简单,只要创建一个系统环境变量:NLS_ ...
- 编写shell脚本遇到的问题
运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”: 原因是因为Linux下的换行符是 \n 而你在 ...
- 阿里云RDS for MySQL备份文件+binlog恢复过程中碰到的一些问题
1.一开始通过官方下载有的压缩包安装,碰到各种依赖问题,最后采用YUM安装 1.通过yum安装percona-Xtrabackup 1.1 先安装依赖: yum install perl-DBI yu ...
- 如何解决WebService参数传递中文乱码问题
1,问题由来 我的主要工作是负责统一适配平台这块,主要任务是提供给客户统一的调用接口,客户使用这个接口可以通过我们再调不同厂家的接口.主要流程如下: 现在客户那边传来的请求报文里面包含中文,使用web ...