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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++的unique函数

在STL中unique函数是一个去重函数&#xff0c; unique的功能是去除相邻的重复元素(只保留一个),其实它并不真正把重复的元素删除&#xff0c;是把重复的元素移到后面去了&#xff0c;然后依然保存到了原数组中&#xff0c;然后 返回去重后最后一个元素的地址&#xff0c;因为un…

用户登录查全表好还是用用户名好_外贸人/货代人不要为海运难过了:请看如何查运价和调配舱位解决缺箱!...

最近很多外贸人/货代人都被海运伤透了心&#xff0c;不仅价格上涨&#xff0c;还经常没舱位或缺柜子&#xff01;整个人的心态都不好了。其实呢运价上涨这个大环境趋势&#xff0c;我们也无法改变。但是没舱位和缺柜子是属于流动性的&#xff0c;只要不死盯一家船公司还是可以解…

BCVP开发者说第4期:Remember.Core

沉静岁月&#xff0c;淡忘流年1项目简介Remember.Core一个轻量的 Web 应用框架, 具有优雅、高效、简洁、富于表达力等优点。采用 前后端分离 设计&#xff0c;是崇尚开发效率的全栈框架简洁友好 - 统一的设计规范&#xff0c;精心打磨的操作界面回应你的期待。易扩展 - 一套完整…

c++十进制转二进制_二进制与十进制如何互相转换?

正整数的十进制转换二进制将一个十进制数除以二&#xff0c;得到的商再除以二&#xff0c;依此类推直到商等于一或零时为止&#xff0c;倒取除得的余数&#xff0c;即换算为二进制数的结果。只需记住要点&#xff1a;除二取余&#xff0c;倒序排列。由于计算机内部表示数的字节…

matlab eval函数_matlab自动给变量命名

在某些特定场景中&#xff0c;我们需要在一个循环中生成一系列的数据&#xff0c;并把这些数据保存到特定的变量中&#xff0c;这个时候我们就需要实现自动给变量命名&#xff0c;同时赋给变量数值。下面提供2种方法。方法1通过eval函数实现&#xff0c;举个例子clear%%%%%%%%%…

c++的STL中的map(哈希表)与unordered_map

map: unordered_map: map&#xff1a; map内部实现了一个红黑树&#xff0c;该结构具有自动排序的功能&#xff0c;因此map内部的所有元素都是有序的 unordered_map:unordered_map内部实现了一个哈希表&#xff0c;因此其元素的排列顺序是杂乱的&#xff0c;无序的 Map是STL的…

IdentityServer4系列 | 简化模式

一、前言从上一篇关于资源密码凭证模式中&#xff0c;通过使用client_id和client_secret以及用户名密码通过应用Client(客户端)直接获取&#xff0c;从而请求获取受保护的资源&#xff0c;但是这种方式存在client可能存了用户密码这不安全性问题&#xff0c;所以需要做到client…

char截取字符串_字符串的排列(滑动窗口)

题目&#xff1a;给定两个字符串 s1 和 s2&#xff0c;写一个函数来判断 s2 是否包含 s1 的排列。换句话说&#xff0c;第一个字符串的排列之一是第二个字符串的子串。示例1&#xff1a;输入: s1 "ab" s2 "eidbaooo"输出: True解释: s2 包含 s1 的排列之…

c++中的全排列函数next_permutation()

全排列函数next_permutation() prev_permutation函数&#xff08;按降序排序&#xff09; 计算序列全排列的函数&#xff1a;next_permutation&#xff08;start,end&#xff09;&#xff0c;此函数求的是当前排列的下一个排列&#xff0c;这里的“下一个”&#xff0c;我们可…

学习搭建 Consul 服务发现与服务网格-有丰富的示例和图片

第一部分&#xff1a;Consul 基础1&#xff0c;Consul 介绍官网文档描述&#xff1a;Consul 是一个网络工具&#xff0c;提供功能齐全的服务网格和服务发现。它可以做什么&#xff1a;自动化网络配置&#xff0c;发现服务并启用跨任何云或运行时的安全连接。那么&#xff0c;我…

多线程并发如何高效实现生产者/消费者?

【导读】无需引入第三方消息队列组件&#xff0c;我们如何利用内置C#语法高效实现生产者/消费者对数据进行处理呢&#xff1f;在.NET Core共享框架&#xff08;Share Framework&#xff09;引入了通道&#xff08;Channel&#xff09;&#xff0c;也就是说无需额外通过NuGet包安…

js-cookie 无法设置cookie_php操作 cookie

1&#xff0c;设置cookie<?phpsetcookie(key);setcookie(key1,value1);setcookie(key2,value2,time()1*24*60*60);setcookie(key4, value4, time() 1 * 24 * 60 * 60, , , false, true); //一旦cookie的httponly为真&#xff0c;那么只能在服务端获取&#xff0c;js无法操…

.Net orm 开源项目 FreeSql 2.0.0

写在开头2018年11月头脑发热到今天&#xff0c;一晃已经两年&#xff0c;当初从舒服区走向一个巨大的坑&#xff0c;回头一看后背一凉。两年时间从无到有&#xff0c;经历数不清的日夜奋斗&#xff08;有人问花了多长时间投入&#xff0c;答案&#xff1a;全职x2 两年无休息&a…

c语言函数库——ispunct函数 判断字符是否为标点符号或特殊字符

c语言函数库——ispunct函数 判断字符是否为标点符号或特殊字符 头文件&#xff1a;#inlude <ctype.h> spunct() 函数用来检测一个字符是否为标点符号或特殊字符&#xff0c;其原型为&#xff1a; int ispunct(int c); 【参数】c 为需要检测的字符。 【返回值】若 c 为标…

js重新渲染div_前端工程师必备:从浏览器的渲染到性能优化

文章来自&#xff1a;华为云开发者社区摘要&#xff1a;本文主要讲谈及浏览器的渲染原理、流程以及相关的性能问题。问题前瞻1. 为什么css需要放在头部&#xff1f;2. js为什么要放在body后面&#xff1f;3. 图片的加载和渲染会阻塞页面DOM构建吗&#xff1f;4. dom解析完才出现…

做架构也得讲武德

这里是Z哥的个人公众号每周五11&#xff1a;45 按时送达当然了&#xff0c;也会时不时加个餐&#xff5e;我的第「169」篇原创敬上大家好&#xff0c;我是Z哥。今天分享一篇对「架构」这件事的随想。我想&#xff0c;做「架构」是每个热爱技术的技术人在不断追求想进入的领域。…

c++随机数函数rand()

c 语言rand()生成随机数 c语言中rand()函数生成随机数的用法&#xff1a; 详细介绍&#xff1a; (1)使用该函数首先应在开头包含头文件stdlib.h #include<stdlib.h>(C建议使用#include&#xff0c;下同) (2)在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数…

杂牌手柄模拟xboxone手柄_手机就能玩Switch游戏,蛋蛋模拟器+盖世小鸡X2手柄体验...

最近收到一个很爆炸的消息&#xff0c;国外大神开发出了EGG模拟器(蛋蛋模拟器)&#xff0c;让手机也能玩Switch游戏&#xff0c;一直垂涎Switch游戏体验的我怎么能错过呢&#xff0c;必须一探究竟。据悉&#xff0c;EGG模拟器支持100多款Switch游戏&#xff0c;而且游戏还在持续…

api-hook,更轻量的接口测试工具

前言在网站的开发过程中&#xff0c;接口联调和测试是至关重要的一环&#xff0c;其直接影响产品的核心价值&#xff0c;而目前也有许多技术方案和工具加持&#xff0c;让我们的开发测试工作更加便捷。接口作为数据传输的重要载体&#xff0c;数据格式和内容具有多样性&#xf…

C++11的for循环使用auto的新用法

C11的for循环使用auto的新用法 for(auto a:vec) { cout<<a<<" "; } #include<bits/stdc.h> using namespace std; int main() {vector<int> vec;for(int i0; i<10; i){vec.push_back(i);}for(auto a:vec){cout<<a<<" …