2012-07-30 37 views
0

來到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,我不希望使用)

回答

1

這可能只是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

相關問題