利用noesis.Javascript开源组件.Net中执行javascript脚本
2013-12-05 00:00
856 查看
界面如下:
然后,click filter button后的UI:
看,筛选出来了,代码如下(js能调C#写的UserInfo类的各个属性)
我们来看看效率:
结果(上面的是通过js引擎计算的时间、下面的是纯C#计算时间,悲剧啊):这个Noesis.Javascript只适用于性能要求不高的场合
然后,click filter button后的UI:
看,筛选出来了,代码如下(js能调C#写的UserInfo类的各个属性)
public class UserInfo { public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; } public override string ToString() { return string.Format("{0}, {1}: {2}", FirstName, LastName, Age); } } private void btnSearch_Click(object sender, EventArgs e) { List<UserInfo> users = FilterUsers(txtFilter.Text.Trim()); lstUsers.DataSource = users; } private List<UserInfo> FilterUsers(string jsFilter) { List<UserInfo> results = new List<UserInfo>(); if (jsFilter.Trim().Length == 0) return this.users; try { using (JavascriptContext context = new JavascriptContext()) { foreach (UserInfo user in this.users) { context.SetParameter("user", user); context.SetParameter("isInclude", false); string js = string.Format(@" if({0}) isInclude=true; else isInclude=false;", jsFilter); context.Run(js); bool isInclude = (bool)context.GetParameter("isInclude"); if (isInclude) results.Add(user); } } } catch { txtFilter.Focus(); txtFilter.SelectAll(); return this.users; } return results; }
我们来看看效率:
private void btnTest_Click(object sender, EventArgs e) { using (JavascriptContext context = new JavascriptContext()) { Stopwatch sw = new Stopwatch(); sw.Start(); int i=1000000; while(i-- > 0) { context.SetParameter("ii", 1); context.SetParameter("jj", 2); context.SetParameter("sum", 0); string js = string.Format(@"sum=ii+jj;"); context.Run(js); int sum = (int)context.GetParameter("sum"); } sw.Stop(); long useJS_Total = sw.ElapsedMilliseconds; float useJS_Average = ((float)sw.ElapsedMilliseconds) / 1000000; sw.Reset(); sw.Start(); i = 1000000; while (i-- > 0) { int ii = 1; int jj = 2; int sum = 0; sum = ii + jj; } sw.Stop(); long nouseJS_Total = sw.ElapsedMilliseconds; float nouseJS_Average = ((float)sw.ElapsedMilliseconds) / 1000000; string msg = ""; msg += string.Format("useJS_Total: {0}\r\n", useJS_Total); msg += string.Format("useJS_Average: {0}\r\n\r\n\r\n", useJS_Average); msg += string.Format("nouseJS_Total: {0}\r\n", nouseJS_Total); msg += string.Format("nouseJS_Average: {0}\r\n\r\n\r\n", nouseJS_Average); MessageBox.Show(msg); } }
结果(上面的是通过js引擎计算的时间、下面的是纯C#计算时间,悲剧啊):这个Noesis.Javascript只适用于性能要求不高的场合
相关文章推荐
- 利用noesis.Javascript开源组件.Net中执行javascript脚本
- 绝对酷,如何解决asp.net中javascript脚本的问题(使用服务器控件执行客户端脚本)
- 开源.NET(C#、VB.NET、J#等)脚本执行引擎(利用CodeDOM)
- Winform下利用WebBrowser执行Javascript脚本
- NET定时任务执行管理器开源组件–FluentScheduler
- 绝对酷,如何解决asp.net中javascript脚本的问题(使用服务器控件执行客户端脚本)
- 关于asp.net中javascript等脚本不能执行的原因.
- .net .cs文件中执行javascript脚本
- VB.NET 利用ScriptManager执行客户端脚本方法
- 调试客户端脚本 利用VS.Net 中的调试器来调试JavaScript
- 执行代码[WebKit] JavaScriptCore解析--基础篇(二)解释器基础与JSC核心组件
- KTDictSeg 一个C#.net做的简单快速准确的开源中文分词组件
- asp.net 开源制图组件(1) ZedGraph
- asp.net中常用javascript脚本输出的辅助类JScript
- .net 服务器事件和客户端js事件的执行顺序以及在脚本运行前定义脚本要修改的 HTML 元素
- [导入]JavaScript组件之JQuery(A~Z)教程(基于Asp.net运行环境)[示例代码下载]
- 【.Net码农】 .NET中执行js脚本的方法
- 利用Apache开源组件poi-3.15导出Excel表
- 第8章 C# .NET 开源可进行二次开发的即时通讯组件提供全部源码下载