LuaJIT 是否能比 C 更快?

有没有一种情况,LuaJIT 可以比 C 执行代码更快?

通过搜索,我发现有些人谈论它至少可以与 C 代码竞争,但我从未见过/找到一个例子,也无法想象如何创建一个使 Lua 比 C 更快的设置,因为 Lua 似乎依赖于 C 库。

有没有人有(过)这样的情况,并/或可以向我展示 Lua 比 C 代码更快的例子?

点赞
用户4403144
用户4403144

根据这里的文档,Lua 是用 C 实现的。它的速度只能和 C 一样快,但更可能比 C 慢。它不能比自己实现的语言更快。

2018-07-15 02:10:48
用户5688146
用户5688146

你在混淆Lua和LuaJIT。第一个是一个纯解释器,没有接近“C的性能”。

另一方面,在LuaJIT中,虽然仍然是用C构建的,但是性能关键部分是直接用汇编语言实现的(DynASM,也与LuaJIT项目有关)。此外,正如其名所示,如果跟踪器认为这是正确的事情,你的Lua代码可以进行JIT编译。

这里你会发现一些(可能有点偏见的)代码,展示了LuaJIT在表查找方面有极快的速度,并且在这种情况下至少能够优于C/C++。 https://gist.github.com/spion/3049314

2020-11-09 22:56:21
用户4712919
用户4712919

就我所见,总的来说,编译语言的速度更快(但这只是我的估计,可能不够准确),而解释语言则更具可移植性,并且可以在运行时进行更改。

JIT是介于编译语言和解释语言之间的某种东西,你可以参加一门有关JIT的课程来了解它,但它的代码解释使其通常慢一些。虽然你可以接近“编译语言的速度”,但永远无法完全达到。

话虽如此,重要的是要将苹果与苹果进行比较,因此如果同样实现的代码,你绝对可以编写比Lua代码更慢的C代码,但功能却实现了相同的计算。

2021-08-12 09:52:01