织梦网站面包屑导航怎么做,做企业网站 需要注意的,东莞市建设局门户网站,联盟营销平台接上一篇博文#xff0c;用Roslyn动态编译C#语句片段#xff0c;情怀了一把#xff0c;但内存会飙升#xff0c;执行速度也奇慢#xff0c;这条路走不通#xff0c;回归正道#xff0c;说起脚本#xff0c;Lua是常用的手段之一#xff0c;那就看看NLua怎么样#xff… 接上一篇博文用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知识的地方。 Liststring NLua(){var functionBody
function GetTel(tel)local newStrstring.gsub(tel,-,) return string.sub(newStr,1,4)..-..string.sub(newStr,5,8)..-.. string.sub(newStr,9,-1)
end
;var list new Liststring();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中生产还是要专业高效高性能的来支撑多看看多找找多比比多试试多测测。