IronRuby需要一段时间才能加载。这是正常的吗?

问题描述:

来到IronRuby并认为它很有趣。决定试一试。IronRuby需要一段时间才能加载。这是正常的吗?

我有一些我想分发的ruby脚本。然而,我的观众可能会也可能不会在他们的系统上安装ruby,但他们会拥有.net,所以我认为我只需将C#GUI与Iron Ruby的dll一起编写捆绑在一起,以便他们可以运行这些ruby脚本而无需必须安装红宝石。而且我还可以利用在C#中制作GUI的优势。

所以我决定通过简单地运行一个文件

ScriptEngine engine = Ruby.CreateEngine(); 
engine.ExecuteFile("hello_world.rb"); 

hello_world.rb包含一行

3.times { p 'hello' } 

然后,我让我的应用程序运行和等待...
几秒钟后它来测试它向控制台打印hello 3次。

它应该需要很长时间才能成为红宝石引擎?我想我可以启动引擎,然后在程序执行期间保持运行,但不得不等待它启动可能会很无聊。

我使用IronRuby的1.0 .NET 2.0内置如果有差别(我还没有尝试过1.1,但它标榜为.NET 4,我不希望使用)

这可能只是JIT在开始时编译所有内容。如果你想测试这个,在hello world之后执行一个不同的脚本,它应该立即打印到控制台。

+0

是的,你是对的。其余的脚本在第一个脚本之后立即执行。有没有办法缩短加载时间?我总是可以用一个可爱的动画来折腾他们的注意力。 – MxyL 2012-07-30 03:33:37

+0

当应用程序第一次加载时,您可以尝试运行一个空白脚本(或执行单个操作的脚本)以使JIT在应用程序启动之前将其全部编译。 (您也可以在GUI启动时分离出另一个线程,并在加载完成之前灰掉“运行”按钮。如果时间太长,某些“加载IronRuby”文本可能会有用) – 2012-07-30 03:41:00

+0

听起来像是一个很好的解决方案。用户可能不会启动应用程序,然后立即尝试运行ruby脚本。 – MxyL 2012-07-30 03:42:28