知识问答
LuaJIT是什么
LuaJIT 是采用 C 语言写的 Lua 代码的实时跟踪编译器。LuaJIT 已被成功地用作游戏,设备,网络和图形应用程序,数字模拟,交易平台和许多其他专业应用程序中的脚本中间件。
LuaJIT 是采用 C 语言写的 Lua 代码的实时跟踪编译器。LuaJIT 已被成功地用作游戏,设备,网络和图形应用程序,数字模拟,交易平台和许多其他专业应用程序中的脚本中间件。它从嵌入式设备,智能手机,桌面到服务器农场。它结合了高灵活性、高性能和无与伦比的低内存占用。
自 2005 年以来,LuaJIT 一直在不断发展。它被广泛认为是最快的动态语言实现之一。自从第一次发布以来,它在许多跨语言基准测试中表现优于其他动态语言,通常情况下还是有很大的优势。
对于 LuaJIT 2.0,整个虚拟机已经从头开始重写,并对性能进行了无情的优化。它将用汇编语言编写的高速解释器与先进的 JIT 编译器相结合。
一个创新的跟踪编译器集成了先进的基于 SSA 的优化和高度调整的代码生成后端。与动态语言相关的开销的大幅度降低使得它可以打破传统上为离线静态语言编译器保留的性能范围。
LuaJIT 并不是直接将 lua 转为机器码,而是先以 LuaJIT 的 bytecode 在 runtime 中 iterpreter 模式运行,iterpreter 运行中发现某段代码经常被执行就会开启记录模式,记录这段代码的细节,推测变量的类型,记下来->SSAIR->机器码。
以 trace compiler 方案推测着运行机器码,用固定的内存访问而不是查表操作,所以速度更快。
LuaJIT 为了极限级的性能,就会大胆进行假设,如果发现 a+b 就是两个数值相加,就编译出数值求和的机器码。
但是如果某一时刻 a+b 不是数值相加,而是变成了两个表相加呢?这机器码岂不是就导致错误了?因此每次 LuaJIT 做了假设时,都会加上一段守护代码(guard),检查假设是不是对的,如果不对,就会跳转出去,再根据情况,来决定要不要再编译一段新的机器码,来适配新的情况。
lua编译是什么意思上一篇:Rantopad是什么意思?
下一篇:企业试用香港服务器建站好处有哪些
最新文章
- MySQL 中字符类型有哪些特点和应用场景?
- 谷歌:服务器重定向次数太多,如何解决? (服务器重定向次数太多)
- 网页空间是什么,腾讯qq网页空间是什么
- 如何解决MySQL数据无法导出的问题?
- html radio怎么用
- 数据库空间是什么,access数据库是什么
- 如何确保敏感内容过滤应用在条件过滤中的准确性和有效性?
- 太原app定制,我的太原app官方下载安装
- 如何确保媒体涉政内容过滤系统的公正性与效率?
- 配置asp运行环境_运行环境
- 如何在饥饿营销策略
- MapReduce 编程模型的深度解析,它如何革新大数据处理?
- SEO领导屋是如何影响网站排名的,网站关键字优化的重要性
- 什么是ip反查,IP反查的作用和原理
- 如何有效使用MySQL数据库操作界面来提升工作效率?
- 域名服务器指的是什么意思
- 如何通过Matlab实现深度学习模型的预测分析?
- 安卓rom制作工具
- 如何高效管理MySQL数据库及其端口以优化用户访问?
- 电脑如何更改默认主页,如何更改电脑屏保