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

用户体验 网站 外国企业服务平台登录

用户体验 网站 外国,企业服务平台登录,电子商务网站的网站架构,网站分析步骤本文目录 1、引言2、文件功能3、选择需要初始化的库4、结论 文章对应视频教程: 已更新。见下方 点击图片或链接访问我的B站主页~~~ Lua解释器裁剪,很简单~ 1、引言 在嵌入式中使用lua解释器,很多时候会面临资源紧张的情况。 同时&#xff0c…

本文目录

  • 1、引言
  • 2、文件功能
  • 3、选择需要初始化的库
  • 4、结论


文章对应视频教程:

已更新。见下方


点击图片或链接访问我的B站主页~~~

Lua解释器裁剪,很简单~


1、引言

在嵌入式中使用lua解释器,很多时候会面临资源紧张的情况。
同时,哪怕资源不紧张,我们也会考虑对lua解释器进行裁剪,本文就在上篇帖子的基础上进行裁剪演示。
《Lua移植到标准ANSI C环境》


2、文件功能

在lua解释器裁剪前,我们需要知道lua具备哪些功能,哪些功能可以裁剪。
对应的功能放在什么文件夹中。
我根据我自己的经验对lua 5.4.6版本的源码进行了简单的总结,每个文件的功能如下图:

在这里插入图片描述
这个图上记录了5.4.6版本中所有Lua解释器源码对应的作用,其中棕色的标记的文件就是我们此次要进行裁剪的功能对应的文件。


3、选择需要初始化的库

首先,打开工程路径lua\source\lua,找到路径下的linit.c文件:
文件中对应的初始化时加载的库代码(我已经添加了注释):

/*
** these libs are loaded by lua.c and are readily available to any Lua
** program
*/
static const luaL_Reg loadedlibs[] = {{LUA_GNAME, luaopen_base},                  /*全局变量和函数,如_G全局表。 */{LUA_LOADLIBNAME, luaopen_package},         /*加载机制,提供动态加载库的功能。 */{LUA_COLIBNAME, luaopen_coroutine},         /*协程库,支持创建和管理协程。 */{LUA_TABLIBNAME, luaopen_table},            /*表操作库,提供表相关的操作函数。 */{LUA_IOLIBNAME, luaopen_io},                /*I/O操作库,提供文件和标准输入输出的操作函数。 */{LUA_OSLIBNAME, luaopen_os},                /*操作系统服务库,提供操作系统相关的函数,如环境变量、进程管理等。 */{LUA_STRLIBNAME, luaopen_string},           /*字符串操作库,提供字符串处理函数。*/ {LUA_MATHLIBNAME, luaopen_math},            /*数学库,提供数学相关函数,如三角函数、随机数等。 */{LUA_UTF8LIBNAME, luaopen_utf8},            /*UTF-8编码库,提供UTF-8编码相关的操作函数。 */{LUA_DBLIBNAME, luaopen_debug},             /*调试库,提供调试相关功能,如打印堆栈信息、设置断点等。*/{NULL, NULL}
};

这段代码决定了lua初始化时,可以加载的库类型。
我们选择注释掉第二小节中不需要的库。

/*
** these libs are loaded by lua.c and are readily available to any Lua
** program
*/
static const luaL_Reg loadedlibs[] = {{LUA_GNAME, luaopen_base},                  /*全局变量和函数,如_G全局表。 */// {LUA_LOADLIBNAME, luaopen_package},         /*加载机制,提供动态加载库的功能。 */// {LUA_COLIBNAME, luaopen_coroutine},         /*协程库,支持创建和管理协程。 */{LUA_TABLIBNAME, luaopen_table},            /*表操作库,提供表相关的操作函数。 */// {LUA_IOLIBNAME, luaopen_io},                /*I/O操作库,提供文件和标准输入输出的操作函数。 */// {LUA_OSLIBNAME, luaopen_os},                /*操作系统服务库,提供操作系统相关的函数,如环境变量、进程管理等。 */{LUA_STRLIBNAME, luaopen_string},           /*字符串操作库,提供字符串处理函数。*/ {LUA_MATHLIBNAME, luaopen_math},            /*数学库,提供数学相关函数,如三角函数、随机数等。 */{LUA_UTF8LIBNAME, luaopen_utf8},            /*UTF-8编码库,提供UTF-8编码相关的操作函数。 */// {LUA_DBLIBNAME, luaopen_debug},             /*调试库,提供调试相关功能,如打印堆栈信息、设置断点等。*/{NULL, NULL}
};

同时可以把图中对应橙色部分的文件删除掉:
在这里插入图片描述

重新编译工程:
在这里插入图片描述
在这里插入图片描述
编译通过。
执行编译完成的程序:
在这里插入图片描述

所有的测试仍然可以通过,说明我们的裁剪没有对我们需要的功能造成影响。
因为在测试代码中,我们已经将相关的功能的测试代码已经注释掉了。
在这里插入图片描述
如果没有注释掉的话,测试代码就会产生断言,导致测试无法完全通过。


4、结论

关于lua解释器的裁剪就完成了,对其裁剪有利于嵌入式的应用,满足更多的使用场景。
好处有以下几点:

减小体积:裁剪可以移除不常用或不需要的功能模块,显著减少Lua解释器的二进制大小。这对于资源受限的环境尤为重要,比如嵌入式设备、游戏引擎、路由器固件(如OpenWRT)等,它们往往对存储空间有严格要求。

提高效率:去除不必要的功能可以减少解析和执行时的内存占用,提升运行效率。对于性能敏感的应用,如实时系统,这一点尤为关键。

增强安全性:通过裁剪,可以移除潜在的安全风险点,比如网络或文件系统访问相关的API,从而为系统增加一层保护,防止恶意脚本攻击。

简化接口:裁剪过程可以定制Lua环境,仅保留与应用场景直接相关的API,这样可以简化开发者的使用界面,降低学习成本和出错概率。

定制化功能:根据特定应用场景的需求,裁剪解释器可以集成特定的C库或功能,实现高度定制化的解决方案,提高软件的适应性和灵活性。

加快启动速度:更小的代码量意味着更快的加载时间,这对于需要快速启动的场景(如游戏加载、即时响应系统)特别有益。

综上所述,裁剪Lua解释器是一种优化技术,旨在适应特定环境和需求,通过减小尺寸、提升效率、增强安全性和提升用户体验来满足不同应用场景的要求。


时间流逝、年龄增长,是自己的磨炼、对知识技术的应用,还有那不变的一颗对嵌入式热爱的心!

到这里就结束了!希望大家给我的文章和B站视频
点赞o( ̄▽ ̄)d、关注(o)/~、评论(▽)!

http://www.yayakq.cn/news/518315/

相关文章:

  • 普通的订阅号怎么做微网站购物网站建设网页推广
  • 常州模板建站哪家好公司网站建设维护
  • 湖南pc网站建设费用小熊代刷推广网站
  • 校园网站建设工作总结河南省住房建设厅网站首页
  • 有什么展厅设计做的好的网站网站空间申请
  • 怎样做教育视频网站注册一个新公司需要多少钱
  • 宝安最好的网站建设wordpress 插件 meta
  • 怎样开发手机网站建设招商网站建设定做
  • 网站建设移动端是什么意思山西省建设监理官方网站
  • 嘉定做网站网站模板图册
  • 惠州网站建设哪家便宜做国际生意的网站有哪些
  • 股票查询网站模板 wordpress一元夺宝网站怎么做
  • 手机网站整站源码下载dede网站图标
  • 自己做一个网站的成本深圳东门密室逃脱
  • 优秀网站建设设计html网站模板 淘宝商城
  • 网站后角色管理权限怎么设置?网站建设有什么要求
  • 营销型网站制作国产免费linux服务器
  • 上海网站建设大概多少钱东营建设局官网
  • wordpress电影下载站主题腾讯云主机做网站
  • 做映射后 内网无法通过域名访问网站天进机械东莞网站建设
  • 高端网站建设968福清可以做宣传的网站
  • 新手学做网站pdf长沙装修公司口碑比较好的
  • 做网站难吗?协会门户网站建设
  • 广州网站推广服务商博客wordpress模版8.0
  • 建设一个网站需要多久做个简单网站大概多少钱
  • 网站优化推广公司推荐wordpress调用文章位置
  • 网站负责人 备案中国建造师网官网个人入口
  • 房山石家庄网站建设网上二手书网站开发中的问题和展望
  • 李沧网站建设电话免费的个人简历电子版
  • 零基础学pytho 网站开发深圳生产型企业网站建设