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

一个情怀引发的生产事故(续)相关推荐

  1. 一个情怀引发的生产事故

    在一个项目中,需要轻量级用到脚本语言,来提高应用服务的灵活性.因为知道Roslyn可以动态编辑C#,本着情怀,就自然用Roslyn来处理这块业务了.开在windows上执行,一次调用风平浪静,因为这个 ...

  2. 【Jedis testOnBorrow配置 引发的生产事故】

    [Jedis testOnBorrow配置 引发的生产事故] 背景 问题排查 问题总结 原因分析 破案 总结 完 背景 公司系统在昨晚升级之后,一晚上基本没睡觉的我一大早7点被运维打电话叫醒,并告诉了 ...

  3. 【问题排查】InheritableThreadLocal类引发的生产事故

    目录 背景 项目背景 问题 现有代码逻辑 线程池配置类 线程上下文持有类:ThreadContext Session过滤器 分析 初步分析 重现问题 debug调试 从获取SessionId的代码入手

  4. Spring Transactional还能导致生产事故?

    在Spring中进行事务管理非常简单,只需要在方法上加上注解@Transactional,Spring就可以自动帮我们进行事务的开启.提交.回滚操作.甚至很多人心里已经将Spring事务与@Trans ...

  5. Spring官方推荐的@Transactional还能导致生产事故?

    在Spring中进行事务管理非常简单,只需要在方法上加上注解@Transactional,Spring就可以自动帮我们进行事务的开启.提交.回滚操作.甚至很多人心里已经将Spring事务与@Trans ...

  6. mysql grant produce_ERROR 1045 (28000) Mysql中grant 使用不当导致的生产事故

    背景: 新项目上线,Data Warehouse 的同事要从Mysql 的SLAVE 库上抽取数据.其中一项任务是授予读取数据库的权限. 没想到这个简单的操作也引发了一些意外. 在只读用户增加权限后, ...

  7. 什么?Spring官方推荐的@Transational还能导致生产事故?

    在Spring中进行事务管理非常简单,只需要在方法上加上注解@Transactional,Spring就可以自动帮我们进行事务的开启.提交.回滚操作.甚至很多人心里已经将Spring事务与@Trans ...

  8. @Transactional导致的生产事故

    @Transactional导致的生产事故 当我们遇到一个长事务的时候,尽量不要是用@Transactional注解 因为当高并发的时候可能出现:数据库监控平台一直收到告警短信,数据库连接不足,出现大 ...

  9. 生产事故 java_记一次生产事故:30万单就这样没了!

    背景 你好,我是彤哥. 昨天晚上下班回家,在地铁上,老大突然打来电话,B系统生产环境响应缓慢,影响了A系统的使用,几万小哥收不了单,大概有30万单卡住了,你去帮忙定位一下. 我8点半左右到家,立马上线 ...

最新文章

  1. jquery压缩图片插件
  2. 两篇文章说异常和中断之二
  3. 各地结婚年龄出炉,哪个地方的人最晚婚?
  4. [转载]sql(hive)中变量的使用
  5. 作业3(学习进度表)【第四周】
  6. POJ 1276 ATM凑钱(动态规划)(未解答)
  7. hbase 按时刻查询_Hbase查询工具类,根据时间查询数据
  8. NOI Linux2.0使用系列视频集
  9. html登录选项卡实例,html+JQuery登录实例
  10. 10.11.5 brew mysql_mac 通过brew 安装的mysql启动失败解决方案
  11. [转载] Java——System.exit()用法及个人理解
  12. Matlab中TCP通讯-实现外部程序提供优化目标函数解
  13. BUG_ON WARN_ON in Linux Kernel
  14. 模板题——图论相关(1)
  15. JSP EL表达式中11个隐藏对象file:///D:/SoftwareFile/qq file/MobileFile/34090016310074682(1).png
  16. CDH6离线安装教程
  17. 开启密钥轮换(仅适用由密钥管理服务生成的密钥)
  18. 美团java研发岗二面:mysql功能介绍
  19. 计算机科学与技术反思录
  20. 完美解决Macbook安装win 10调节亮度的问题

热门文章

  1. linux里查看最耗CPU的线程
  2. HDU 6343.Problem L. Graph Theory Homework-数学 (2018 Multi-University Training Contest 4 1012)
  3. 深度解析windows调试技术之一 [抓取user mode dump文件的几重境界]
  4. 关于Tomcat5.5中EL表达式无效的解决办法
  5. IHttpModule 与IHttpHandler的区别
  6. RFID会议签到系统总结(二十一)――服务端的通讯
  7. 如何在Windows 7、8、10,Vista或XP中删除Windows服务
  8. 腾讯地图判断点是否在区域内
  9. 读名老中医之路笔记(二)
  10. weblogic清除缓存