Using XS code template for Class::MOP

XS code template法を使ったアクセサジェネレータをClass::MOPに実装してみた。

現在(0.86)はアクセサを定義するためにprehashed_keysテーブルをはじめとしてソースコードのさまざまな部分を修正しなければならないが,これによってアクセサの定義が非常に簡単になる。またその結果,メンテナンスもしやすくなることも期待できる。

さらに,上記のperl-users.jpの記事では得意げに「ハッシュ値を計算しておく」などと書いてしまったが,実際にはその必要はまったくない。その理由はXSで共有文字列を活用するに書いたように,共有文字列SVはハッシュのキーとして使うように設計されており,SV構造体内に計算済みのハッシュ値を持っているからだ。そこで,この知見もパッチには取り入れてある。

共有化文字列を使用しているため理論的には若干高速になると思われるが,ベンチマークをとっても結果が不安定だった。したがって,高速化の効果は不明である。