欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

一个情怀引发的生产事故(续)

发布时间:2023/12/4 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 一个情怀引发的生产事故(续) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

接上一篇博文,用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<string> 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<string>();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中,生产还是要专业高效高性能的来支撑,多看看,多找找,多比比,多试试,多测测。

总结

以上是生活随笔为你收集整理的一个情怀引发的生产事故(续)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。