与Mono比较Lua

我想进行一些研究,但我找不到关于这个主题的任何信息。

我找到的唯一信息 -> http://benchmarksgame.alioth.debian.org/u32/compare.php?lang=csharp&lang2=lua

而且我不确定如何解释这张图表。 如果我没错的话,它基本上是说Lua比Mono快10倍。 但Mono的内存使用率比Lua好约8倍。

这对性能有什么影响?

比较LuaMono -> 优势/劣势

编辑: [游戏开发] Cryengine 3目前使用c++/lua。但是有些人正在发布此引擎的mono端口。 我对Mono非常熟悉。 但现在我想研究Lua,看看它是否值得学习这种语言,或者我应该坚持使用Mono。

点赞
用户524475
用户524475

这句话的意思是:苹果比香蕉更绿。

你不能仅仅说“Lua 消耗的内存比 C# 少,但需要的 CPU 循环次数多大约 50%”,你必须将它们相对于你的上下文进行比较,例如你想构建什么。

如果您想计算 5*5,好吧,Lua 可能更快(从实现的角度来看)。但是如果你想建立一个带有许多客户端的 ERP 应用程序,我不建议你使用 Lua。

因此,我们无法为您提供明确的优缺点列表,因为它非常依赖于您想要做什么。

2012-06-04 11:36:37
用户14637
用户14637

你正在比较 不相干的事物。C# 是一种静态类型的语言,编译后生成 CIL 字节码,由虚拟机运行(通常是 JITted),用于网页和独立应用程序开发。Lua 是一种动态类型的脚本语言,通常由解释器运行,经常作为可扩展脚本语言嵌入到更大型应用程序中。

而且,你对基准测试的解释是错误的。条形图显示,与等效的 Lua 程序相比,Mono 程序的运行时间约为其的 1/10。

尽管如此,这种微基准测试在很大程度上是无用的。不要听从我的话,读一下 Shootout 自己的意见。你应该读整个内容,不过我会拿出一些引人注目的引文:

“即使基准测试的性能是从真实的程序中派生出来的,也可能无法帮助预测具有不同热点的类似程序的性能。”

“在高吞吐量环境中使用解释语言可能看起来自相矛盾,但我们发现 CPU 时间很少是限制因素。语言的表达能力意味着大多数程序都很小,花费大部分时间在 I/O 和本地运行时代码上。”

“将编程语言彼此比较,就好像它们的设计者打算将它们用于完全相同的目的一样——这是不可能的。”

长话短说:根据它在你想要做的事情上表现如何,它是否能让你清晰地表达意图,它是否能让你编写干净、易于维护的代码,选择你的语言;而不是根据一些很大程度上没有意义的数字。

2012-06-04 11:36:45