Boo(3) – ildasm

使用 ildasm 有兩個目的:

  1. 比較print macro 與 print 函數的差別
  2. 比較 booc 編譯出來的可執行檔與 c# 編譯出來的可執行代碼

print macro 與 print 函數算是差別很大吧。
print 函數會調用 Boo.Lang.Builtins 類別裡的 print 函數,雖然實際上此函數的內容也是使用 Console.WriteLine(),但是除了你需要多附上 Boo.Lang.dll 之外,你還需要負擔 CLR 執行時動態把 Boo.Lang.dll 載入的成本。

IL_0005: call void [Boo.Lang/*23000001*/]Boo.Lang.Builtins/*01000001*/::print(object) /* 0A000001 */

使用 print macro 的話,就只是把 Console.WriteLine 替換進去,以編譯出來的結果而言,這會比較有效率,但如果作為 script 執行時,我想應該會有些損失。

IL_0005: call void [mscorlib/*23000001*/]System.Console/*01000001*/::WriteLine(string) /* 0A000001 */

這就是為甚麼BOO Primer建議使用 print macro 的原因。
booc 編譯出來的結果與使用 gmcs (我使用 Mono 的 c# 2.0 編譯器)編譯出來的結果非常接近,都同樣直接呼叫 System.Console.WriteLine,可以視為一樣。
p.s. 我也看過以 csc 編譯出來的結果了,實際上也非常相近,不過反組譯出來的IL代碼裡面的編排有些許不同。

電影流水帳(2008/04/14~2008/04/16)

現在硬碟不值錢啊~250G 的 IDE 硬碟才 2000 元大洋,這是在暗示我敗下去嗎?

  • Eragon(IMDB, Wikipedia),中譯:龍騎士。Eragon 是主角名字,龍騎士應該是 Dragon Rider 才對,這一集只描述了 Eragon 如何成為龍騎士,並打倒小魔王的經過,還不錯看,不過沒有什麼特別驚奇的感覺。我想如果沒意外的話,這肯定會有第二集吧~
  • 長江7號 (CJ7)(IMDB, Wikipedia)。嗯嗯,主角並不是星爺喔,所以並不是搞笑片,而是拍給小朋友看的,我猜是星爺要完成年輕時當兒童節目主持的心願吧~雖然劇情有點老套,不過在後面我還是不爭氣的掉下幾滴眼淚,想起國中看魯冰花時,也是流的滿臉淚~對於這種催淚片,我不是不愛看,而是不想看,避免暴露太多情緒~