[Golang] メソッドをreflect.MethodByNameで呼んだときの性能差

お世話になっております。
しゃまとんです。

ふと、golangでもこんな感じでメソッドって呼べないのかなーと調べてみたんですが、そんないい話はありませんでした。
golangではreflectというパッケージでリフレクションすることができるようになっています(説明になっていない)。そちらでやりたげなことは出来そうなんですが、reflectは重いという噂から、どうなんだろうということで簡単に比較してみました。

golangで文字列的にメソッドを呼ぶにはreflect.MethodByNameを利用して実現できそうです。いけるかな、いけないかな。

さて、検証簡単にベンチマークをとりました。
コードは下記です。

実行結果はこんな感じ。
全然速度違いますね。。

普通に使っている程度だと、使わないですが込み入ったことをするとreflectが登場してくるので使うときは気をつけないとですね。

以上です。

■ 参考

RubyistのためのGolangメタプログラミング

golangのある生活

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です