当前位置: 首页 > wzjs >正文

salbii wordpress百度seo排名报价

salbii wordpress,百度seo排名报价,沈阳营商环境建设局网站,wordpress the id引言 在NLua开发中,我们常面临一个重要选择:将C#函数注册到Lua环境调用,还是直接在Lua中实现逻辑? 直觉告诉我们,C#作为编译型语言性能更高,但跨语言调用的开销是否会影响整体性能?本文通过基准…

引言

在NLua开发中,我们常面临一个重要选择:将C#函数注册到Lua环境调用,还是直接在Lua中实现逻辑? 直觉告诉我们,C#作为编译型语言性能更高,但跨语言调用的开销是否会影响整体性能?本文通过基准测试揭示真相。


测试场景

实现安全索引访问函数At,对比三种实现方式:

  1. NativeLuaAt:纯Lua实现
  2. CSharpRegisterAt:C#实现并注册到Lua
  3. NativeCSharpAt:纯C#直接调用

测试环境:

  • .NET Framework 4.8.1
  • Intel Core i7-1260P
  • BenchmarkDotNet v0.15.0

性能数据对比

方法平均耗时内存分配
NativeLuaAt6,844 ns288 B
CSharpRegisterAt9,585 ns552 B
NativeCSharpAt106 ns32 B

在这里插入图片描述


结论

出乎意料,直接在Lua中实现逻辑会更快,这里原因可能是将C#函数注册到Lua环境调用涉及到上下文切换等耗时动作。
相关代码见NLuaBenchmarkDotNetTest

代码

Lua代码

--[[
仅用于userdata索引访问函数,C#定义
参数:tbl  : 目标Lua表(数组形式)index: 索引值(支持正负索引)strict: [可选]严格模式,默认false,设为true时额外校验元素连续性
返回值:对应索引位置的元素
异常:类型错误或索引越界时抛出错误
--]]
function At(tbl, index)-- 参数校验阶段 -- 检查第一个参数是否为tableif type(tbl) ~= "userdata" thenerror("bad argument #1 (expected table, got "..type(tbl)..")", 2)end-- 检查索引是否为整数if type(index) ~= "number" or math.floor(index) ~= index thenerror("index must be integer, got "..type(index), 2)end-- 长度计算策略 local len = tbl.Length-- 严格模式下验证表连续性-- 索引转换逻辑 local adjusted_index-- 处理正索引(userdata是 的0-based)if index >= 0 thenadjusted_index = index -- 处理负索引(从末尾倒数)elseadjusted_index = len + index end-- 边界检查与错误处理 -- 有效索引范围:1 ≤ index ≤ lenif adjusted_index < 0 or adjusted_index >= len thenlocal direction = index >=0 and "positive" or "negative"error(string.format("Index %d (%s) out of range [%d, %d]", index, direction, -len, len-1), 2)end-- 最终元素获取 return tbl[adjusted_index]
end

C#代码

        /// <summary>/// 安全索引访问器(支持Lua数组的0-based索引规则)/// </summary>/// <param name="collection">目标集合(支持IList接口的集合)</param>/// <param name="index">索引值(支持负索引倒查)</param>/// <param name="strict">严格模式校验元素连续性</param>/// <returns>索引位置的元素</returns>/// <exception cref="ArgumentNullException">输入集合为空</exception>/// <exception cref="ArgumentException">集合类型不合法或索引无效</exception>public static object At(IEnumerable collection, int index, bool strict = false){// 参数基础校验if (collection == null)throw new ArgumentNullException(nameof(collection), "输入集合不能为null");// 类型安全转换IList list = collection as IList;if (list == null)throw new ArgumentException("输入集合必须实现IList接口", nameof(collection));// 获取有效长度int count = list.Count;if (count == 0)throw new ArgumentException("集合中不包含有效元素", nameof(collection));// 索引转换逻辑int adjustedIndex = index >= 0 ? index : count + index;// 边界校验if (adjustedIndex < 0 || adjustedIndex >= count){string msg = $"索引 {index} 超出有效范围 [{-count}, {count - 1}]";throw new ArgumentOutOfRangeException(nameof(index), msg);}// 严格模式校验if (strict){// 校验是否存在null元素for (int i = 0; i < count; i++){if (list[i] == null){throw new ArgumentException($"严格模式检测到空元素 @ 位置 {i}");}}}return ConvertToDouble(list[adjustedIndex]);}
http://www.dtcms.com/wzjs/200628.html

相关文章:

  • 东莞免费做网站公司最新疫情最新数据
  • 学信网网站建设怎么搞沈阳头条今日头条新闻最新消息
  • 购房网站系统建设方案做网站一般需要多少钱
  • 网页设计公司网站自己怎么创建网站
  • 拟定一个物流网站建设方案网络推广客服好做吗
  • 浏阳做网站的公司价格湖南企业seo优化报价
  • 哪个网站可以做行程上海营销公司
  • 大连网站设计网站推广有哪些方式
  • 那些做电影视频网站的赚钱吗seo的优化步骤
  • 网站生成海报功能怎么做互联网营销师怎么报名
  • 南昌手机网站seo流程
  • 文秘写作网站百度开户是什么意思
  • 陕西省安康市建行 网站网站seo优化多少钱
  • 哪些网站可以在线做动图网页优化方法
  • 泰安百度做网站的网络营销实施方案
  • 做网站推广的公司完美日记网络营销策划书
  • 招聘网站建设策划书深圳sem竞价托管
  • 如何自建一个便宜的网站官方百度
  • 网站建设平台合同模板下载seo推广软件排行榜
  • 做电影网站怎样赚钱吗百度推广客服中心
  • 新疆网站建设推广百度云搜索引擎入口 百度网盘
  • 淘宝客建网站怎么做长沙百度快速优化排名
  • 遵化市城乡建设规划局网站浏览器正能量网站免费
  • 北京移动端网站优化百度seo指数查询
  • 佛山网站建设公司哪家便宜硬件优化大师下载
  • 株洲市网站关键词优化公司百度总部在哪里
  • 玉环县企业网站建设网站app开发公司
  • 生成二维码的网站上海网络推广公司网站
  • 网站一键收录营销策划公司靠谱吗
  • 做的网站侵犯美的商标赔偿多少钱seo专员的工作内容