嵌入式Mono与Google V8哪个更好?

3

我们希望为一个项目添加脚本功能。

我们正在犹豫使用哪个脚本引擎。 我过去使用过V8引擎,它非常出色。我也用过Mono,但仅限于玩具项目或原型。

我们的限制条件是:

  1. 执行速度快。
  2. 易于集成。
  3. 必须在Windows上运行。
  4. 支持64位。
  5. 可在Visual Studio下编译。

哪种引擎最适合?

(是否有关于在win64下使用Visual Studio编译Mono的教程? 是否有一些包含Lib文件和DLL文件的软件包?)


3
Mono绝不是一个脚本引擎。它需要将代码编译成字节码,而编译器库并不小。如果你打算在Windows上使用它,可以使用.NET运行时代替Mono,因为通常已经可用,并且它们是相同的东西。 - Jan Hudec
1
在Windows下构建Mono并不是一件容易的事情。解决方案文件似乎已经有一段时间没有更新了。尽管如此,仍然有预编译版本的Mono可用于Windows。 - Andrew T Finnell
1
对于那些说 Mono 不是脚本引擎的人,我们应该根据项目需要定义“脚本”的术语。Unity 和 Torque 都提供了 Mono 支持以驱动它们的游戏引擎。 - Andrew T Finnell
5个回答

7

我建议你看一下Lua。我认为它可以很好地满足你的需求。


我会点赞这个,因为我认为Lua可以用来解决许多问题。 - Andrew T Finnell
Lua 可以解决许多问题,但由于问题涉及“C++”和“集成便利性”,因此您至少应提到 LuaBind(http://www.rasterbar.com/products/luabind.html)。如果没有 SWIG 的帮助,纯 Lua 与 C++ 的结合需要投入大量的工作。 - lefticus
如果您不使用BOOST,LuaBridge是一个很好的替代方案。 - Dmitry Ledentsov

4

由于没有获得点赞的答案,我想提一下 ChaiScript(是的,我是该项目的联合创始人)。这是一个仅用于嵌入C++应用程序的头文件脚本引擎。它具有完全的64位支持,并且可以与MSVC、G++和MinGW配合使用。唯一的外部依赖项是boost。

它在速度方面并不占优势。如果您需要在脚本本身中进行大量计算,那么我认为您正在错误地使用脚本。您可以向脚本引擎公开越高级别的函数,效果会更好。


你确定例如Second Life使用脚本错误吗(他们正在使用Mono来加速LSL)? - SK-logic

3

V8。它实际上是一个脚本引擎,而不是像Mono(与Java相媲美的全功能编程环境)一样的完整的编程环境。

然而...如果你想要一种脚本语言,你也可以看看Lua。它以容易嵌入、非常快速、非常小巧、编程相对容易和非常自由的许可证著称。如果速度很重要,还有LuaJIT,它仍在开发中,但通过精心设计,将轻松超越C进行数值编程。


7
这些声称“X 语言可能比 C 语言更快”的说法是从哪里来的?我一直很好奇。 - Collin Dauphinee
基准测试?去邮件列表问一下吧;有许多人正在进行这项工作,包括一些实际上使用C语言进行高级工作并调用Lua处理性能关键部分的人... - David Given

2

在Mono发行版中包含了一个MSVS解决方案文件,它足以用于构建库(但是你将无法构建.DLL文件,最好从二进制分发中选择)。请参阅mkbundle,了解将.NET DLL嵌入单个二进制文件的方法。至于脚本本身,您可以嵌入Mono C#编译器(它不是很大,并且易于集成),或使用任何针对.NET的众多脚本语言,例如IronPython。


是的,mkbundle可以在部署应用程序时解决许多问题。 - Ghassen Hamrouni
@Simon.Jacobi,这也是一个有用的示例,说明如何手动将dll嵌入到二进制文件中(它生成的中间文件保留选项)。 - SK-logic

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接