万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

Boo Language Advent Calendar 2012 14日目 Title:「Booの辞書型リテラルのスピード比較」

URL: http://atnd.org/events/34622
皆さんこんばんは。Booやってますか?
万年素人のshinriyoです。

「Boo Language Advent Calendar 2012 2日目 Title:「Booがいかに素晴らしいか?」」で行った、辞書型をC#風とBoo風で勝負します。

Booの書き方は辞書の初期化ないですね。そこ((A)のとこ)も時間測るので卑怯って言わないでね。
dic・・・C#風(Dictionaryを使って書く)
booDic・・・Boo風(辞書型リテラルを使って書く)

コードはこうしました。Pythonっぽく美しくて短くかけていいですね。

・Compare.boo

import UnityEngine
import System.Collections.Generic

class Compare (MonoBehaviour):

    private dic as Dictionary[of string, string]
    private booDic = {}

    def Start ():

        # C# like
        start as single = Time.realtimeSinceStartup
        dic = Dictionary[of string, string]() # (A)
        for num in range(0, 1000):
            dic[num.ToString()] = num.ToString()

        for num in range(0, 1000):
            Debug.Log(dic[num.ToString()])
        finish as single = Time.realtimeSinceStartup

        # Boo like
        booStart = Time.realtimeSinceStartup
        for num in range(0, 1000):
            booDic[num.ToString()] = num.ToString()

        for num in range(0, 1000):
            Debug.Log(booDic[num.ToString()])
        booFinish = Time.realtimeSinceStartup

        # result
        Debug.Log ("CS like" + (finish - start).ToString ())
        Debug.Log ("Boo like" + (booFinish - booStart).ToString ())

1000回突っ込んで1000回出すだけw
これじゃダメって人はツッコミいれてね。

文字型Key、文字型Valueですよ。

何度か結果

CS like0.278652
Boo like0.240931
CS like0.288617
Boo like0.224245
CS like0.279127
Boo like0.229331

あまり変わりませんでしたが、Booが微妙に速いか?
0.05秒くらい。
まぁ微妙に速いし短く書けるならそれに越した事無いですね?

次はなにかこうかしら。