misc.log

日常茶飯事とお仕事と

VisualBasic名前空間のLeft、Midと、String.Substringメソッドの速度差

やっぱり未だに平気でLeftとかMid使う人がいるので、速度差の実証を。http://d.hatena.ne.jp/frontline/20120427/p1 の続きです。
まずは.NETのStringクラスが持つSubstringメソッドの速度。こちらは88μセカンド。



次いで、VisualBasic.String.Left関数。こちらは……1,382マイクロセカンド。Substringの約15倍です。



というわけで、やはり文字列操作系は.NET標準の機能を利用した方がよいですね。確かにLeft関数は便利なんですが…。
では、LeftもやったらMidもやってみましょうか。6文字から中央を抜き出してみましょう。まずは.NETのStringクラスにあるSubstringメソッド。まぁこれはLeftの時と同じくらいになるのが想像できますね。その通りです。89μセカンド。



次にVisualBasic名前空間のMid関数。



約30ミリセカンド。330倍です。VB6.0のMidは桁指定が1オリジンなので直感的にわかりやすいというのがありますが、残念ながらこの速度差だと利用する価値はほとんどありませんね。