博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个情怀引发的生产事故(续)
阅读量:4033 次
发布时间:2019-05-24

本文共 1371 字,大约阅读时间需要 4 分钟。

接上一篇博文,用Roslyn动态编译C#语句片段,情怀了一把,但内存会飙升,执行速度也奇慢,这条路走不通,回归正道,说起脚本,Lua是常用的手段之一,那就看看NLua怎么样,用NLua实现同样的效果,通过配置Lua脚本语言来实现,如下图,波澜不惊,同样是1000次执行,一点压力都没有,只有细微人内存变化。

NLua实现代码

using NLua;using System.Text;namespace NLuaAndRoslynCompare5{    public class NLuaClass    {        public static object[] ExecFunction(string functionName, string function, params object[] parameters)        {            var lua = new Lua();            lua.State.Encoding = Encoding.UTF8;            lua.DoString(function);            var scriptFunc = lua[functionName] as LuaFunction;            return scriptFunc.Call(parameters);        }    }}

调用案例,就是把一个电话号码转换成固定需要的格式,funcfionBody中是Lua脚本语言的实现函数(这里也是比C#要多学一点Lua知识的地方)。

List
NLua() { var functionBody = @"function GetTel(tel) local newStr=string.gsub(tel,""-"","""") return string.sub(newStr,1,4)..""-""..string.sub(newStr,5,8)..""-"".. string.sub(newStr,9,-1)end"; var list = new List
(); var tel = "123-4567-89ab"; for (int i = 0; i < 1000; i++) { foreach (var obj in NLuaClass.ExecFunction("GetTel", functionBody, tel)) { list.Add(obj.ToString()); } } return list; }

通过这次Roslynl转Lua,这个教训告诉我,情怀很重要,但只能在demo中,生产还是要专业高效高性能的来支撑,多看看,多找找,多比比,多试试,多测测。

转载地址:http://olkdi.baihongyu.com/

你可能感兴趣的文章
CocoaPods实践之制作篇
查看>>
[Mac]Mac 操作系统 常见技巧
查看>>
苹果Swift编程语言入门教程【中文版】
查看>>
捕鱼忍者(ninja fishing)之游戏指南+游戏攻略+游戏体验
查看>>
iphone开发基础之objective-c学习
查看>>
iphone开发之SDK研究(待续)
查看>>
计算机网络复习要点
查看>>
Variable property attributes or Modifiers in iOS
查看>>
NSNotificationCenter 用法总结
查看>>
C primer plus 基础总结(一)
查看>>
剑指offer算法题分析与整理(一)
查看>>
剑指offer算法题分析与整理(三)
查看>>
Ubuntu 13.10使用fcitx输入法
查看>>
pidgin-lwqq 安装
查看>>
mint/ubuntu安装搜狗输入法
查看>>
C++动态申请数组和参数传递问题
查看>>
opencv学习——在MFC中读取和显示图像
查看>>
retext出现Could not parse file contents, check if you have the necessary module installed解决方案
查看>>
pyQt不同窗体间的值传递(一)——对话框关闭时返回值给主窗口
查看>>
linux mint下使用外部SMTP(如网易yeah.net)发邮件
查看>>