delegateを使ったサンプルを書いてみました。上記記事では移譲を使ったアプローチにも言及しているし、改善するには頑張らないといけないという程度の話と認識しました。5.025205s見にくくて済みません。コードは下の方にあります。思ったこと元記事のベンチマークは、オブジェクトの生成コストくらいしかないような処理にextendを突っ込んでいるため、そりゃ比較にならないだろうという問題があります。そもそも、処理が無いならDCIを入れる意味なんてほとんどないことを考えれば、ここのコストは無視してもいいものなのですが、無視してもいいコストをいかに削るかという、無駄に挑戦することも一興かなと思い、記事にしました。fooメソッドの処理内容によっては(※)、extendを使った元記事のアプローチの方が優秀な場合もあると思います。柔軟性などを考えれば、移譲の方が使い勝手がいいだろうとも思いますが。Dispatchになるとオーバーヘッドで遅くなる可能性もあると思います。ベンチマーク結果に移ると、forwardableが意外と速い。先に書いた通り、オブジェクト生成コストしかないような処理に対して、半分程度の速度低下でDCIが実現できるということです。これは、RubyにおけるDCIの実用性を示すものではないでしょうか。余談これ、DCIじゃなくてRoleObjectじゃんって突っ込みが入りそうですが、DCIで設計したらRoleObjectで実装するのが定番かなと思ってます。あとは、Decoratorかな。皆DCIに突っ込んでいくとか、勇敢すぎると思う。Coplienの名前が出たら全力で逃げるところだろう。マルチパラダイムデザインの恐怖を忘れたんだろうか。