ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-02-01 15:00:49  阅读:148  来源: 互联网

标签:tel string 事故 lua 引发 情怀 NLua Lua var


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

 

  想要更快更方便的了解相关知识,可以关注微信公众号   

 

 

标签:tel,string,事故,lua,引发,情怀,NLua,Lua,var
来源: https://www.cnblogs.com/axzxs2001/p/15859087.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有