こんばんは、Tsugohです。


上野さん、田中さんの方法を色々と試してみました。

上野さんの方法では特異クラスを使っているため、定数を定義するなど
細かいことが出来ますが、オブジェクトや特異クラスの生成、
また module_eval を使っているためかコストが大きいようです。

田中さんの方法では、細かいことは出来ませんがコストは大幅に小さいようです。

ベンチマークを取ってみたところおよそ2.8倍の差が出ました。

                     user     system      total        real
  eval only      0.380000   0.000000   0.380000 (  0.394351)
  wakaba eval    7.710000   0.000000   7.710000 (  8.428588)
  make_binding   2.970000   0.000000   2.970000 (  3.238291)


あと、私が一度こちらに投稿した上野さんの方法の簡易版では
self が同じならば特異クラスも同じものを返すため
上手く動かすのが少し難しいようです。
(よく考えてみれば当たり前ですね…)

素直に上野さんのものを使うとうまくいきました。


まとめとしては、利点欠点が奇麗に出ている結果となったため
状況に合わせて使い分けるとよさそうです。

お二方とも本当にありがとうございました。

-----
Tsugoh
mailto:tks / xxxx-xx.xx