The Green Side of the Lua
本文通过一项实证研究表明,即时编译(JIT)显著提升了 Lua 的能效与执行速度,其中最优化版本的 LuaJIT 相比标准解释器在能耗上降低了七倍,在运行速度上也提升了七倍,并接近了 C 语言的性能。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下你拥有一辆汽车。有些车配备的是笨重、老式的发动机,虽然费油但最终能把你送到目的地。而另一些车则拥有高科技的涡轮增压发动机,不仅耗油量极低,而且能更快地带你到达目的地。
这篇论文本质上是对 Lua 编程语言进行的一次“燃油经济性测试”,Lua 是一种开发者用来构建软件的流行工具。研究人员想要观察不同版本的 Lua“发动机”在完成同样的工作时,消耗了多少“能量”(电量),以及它们与 C 语言(被视为燃油效率的金标准)相比表现如何。
以下是使用简单类比对研究结果进行的详细解读:
1. 设置:不同的“发动机”版本
研究人员不仅仅测试了一个版本的 Lua。他们测试了 25 个不同的版本:
- “标准型”发动机(解释器): 这些是官方版本的 Lua,它们逐条读取指令,就像一个人对着厨师大声朗读食谱一样。他们测试了 17 个不同的版本,涵盖了从旧型号到最新款(5.4.7)的所有版本。
- “涡轮增压型”发动机(JIT 编译器): 这些是被称为 LuaJIT 的特殊版本。它们不再是逐条朗读食谱,而是在汽车行驶的过程中,将整份食谱翻译成一份极其高效的说明书。他们测试了 8 个这样的版本。
- “金标准”(C 语言): 他们还测试了一个用 C 语言编写的版本,C 语言以其极高的效率而闻名,以此来观察 Lua 距离顶尖水平还有多远。
2. 比赛:速度 vs. 燃油
他们在所有这些发动机上运行了同一组复杂的数学问题(基准测试),并测量了两项指标:
- 时间: 完成比赛需要多长时间?
- 能量: 完成比赛时计算机消耗了多少电量?
结果如下:
- 旧款发动机很“渴”: 标准的 Lua 解释器就像是耗油量巨大的 SUV。最新的标准版本(Lua 5.4.7)是同类中表现最好的,但它消耗的能量和所需的时间仍然是最佳涡轮发动机的 7 倍。
- 涡轮发动机大获全胜: 最好的涡轮发动机(LuaJIT 2.0.4)是明显的赢家。它速度极快,且耗电量非常低。
- 与“金标准”的差距: 即便使用了涡轮发动机,Lua 的效率也还赶不上 C 语言。涡轮版 Lua 消耗的能量约为 C 语言的 6 倍,速度慢了 8 倍。然而,这与标准 Lua 相比已经是巨大的进步了——标准 Lua 的耗能是 C 语言的 38 倍,速度则慢了 55 倍。
3. “电池续航”测试
为了让结果更直观,研究人员进行了一项“电池耐力”测试。想象你有一台电量满格的笔记本电脑。
- C 语言汽车: 在电池耗尽前可以行驶(运行程序)604 次。
- 涡轮版 Lua 汽车: 可以行驶 109 次。
- 标准版 Lua 汽车: 只能行驶 19 次。
这表明,如果你在电池供电的设备(如笔记本电脑或手机)上运行软件,使用标准的 Lua 解释器会比使用涡轮版本或 C 语言更快地耗尽你的电池。
4. 这对“绿色”软件意味着什么
联合国希望我们能够减少全球碳足迹。由于计算机使用电力,而电力通常来自燃烧化石燃料,因此编写“绿色软件”(即使用更少能量的软件)至关重要。
该论文得出结论:
- “旧”并不总是意味着“好”: 尽管标准 Lua 随着每一次更新都在略微改进,但这种进步与切换到“即时”(JIT)编译器所带来的飞跃相比,显得微不足道。
- JIT 是游戏规则的改变者: 从标准的解释器切换到 JIT 编译器,就像是将一辆耗油的卡车换成了混合动力汽车。它极大地减少了能量浪费,并让软件运行得更快。
- Lua 正在变得更“绿”: 通过使用涡轮(JIT)版本,Lua 在“绿色”编程语言的排名中显著上升,尽管它距离像 C 语言这样最高效的语言仍有很长的路要走。
简而言之: 如果你想让你的 Lua 软件既快速又环保,不要只使用标准版本。请使用“涡轮”(JIT)版本,它能让你的程序运行得更快,耗电更少,从而使其效率大大接近世界上最优秀的语言。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。