Path: titcca!kogwy!fxvax!kiuchi From: kiuchi@s5g.ksp.fujixerox.co.jp (Yasuhiko Kiuchi) Newsgroups: fj.lang.lisp Subject: Re: CLOS performance. (In Japanese/Kanji) Message-ID: Date: 17 Mar 90 00:55:08 GMT References: <187@ognews1.osakagas.co.jp> <190@ognews1.osakagas.co.jp> yosikawa@ccs.mt.nec.junet (Masazumi Yoshikawa) writes: Fuji Xeroxの木内です。 ># 木内さんというと,あの,PCL のスタッフの木内さんですか? 去年の6月くらいまで一年ちょっと、コード書きのお手伝いをしていた(という よりは、手伝いながら勉強させてもらったというほうが正確です)のですが、 今は、直接PCLの仕事はしていません。 >ANSI X3J13 の CLtL Clean Up で ANSI Common Lisp への採用が決 >まっている define-compiler-macro というマクロがありますが, >これに対応するものですね. >(define-compiler-macro は defmacro と同様の文法で,コンパイ > ル時だけにマクロ展開されるマクロを定義するものです.) >これで,ANSI 準拠の Common Lisp 処理系に対してポータブルな最 >適化が可能になりますね. げげっ、CLtLの2nd-Editionを一月ほどまえに買ったのですがちゃんと読んで ないのがばれてしまった...。 >defconstructor をマクロ展開してみて感動しました.:-) 凄いですね. 喜んでいただいて嬉しいです。 >最近,CLOS,PCL 周りでは,メタオブジェクトの利用による性能の >向上,最適化などの話題が出てきているようです. >私は,「メタがない方が速いに決まっている」と漠然と考えていた >のですが,「やはりメタオブジェクトは必須なのかな?」という気 >もしてきました. > >メタオブジェクトによる最適化は,どの程度,“メタなし”CLOS >に迫れるのでしょうか? メタオブジェクトがあっても、そのオーバーヘッドは、メタオブジェクトプロ トコルをランタイム時に使用しないプログラムであれば、メタクラスがあるこ とによるパフォーマンスのペナルティーは、それほど問題にならないと思いま す。実際のCLOSの処理系で特にパフォーマンスが問題になるのは、スロットの アクセス速度、メソッドの呼びだしのための時間、インスタンスの生成の時間 とかで、CLOSのメタクラスプロトコルが利用されるところではないと思います (もちろんこれはアプリケーションによります)。 逆に、CLOSの標準のメタクラス群のプロトコルを、メタクラスのような機構な しで、記述するのはそう簡単ではないでしょうし、例によって、仕様がかわっ たり、CLOSシステム自体をさわるのが難しくなると思います。 また、実際のアプリケーションが、CLOSの標準のメタクラスが持つような機能 がいらないようなアプリケーションでは、その機能を外したメタクラス群を用 意することにより、標準のCLOSよりも高速な処理系(というべきかメタクラス 群というべきか)を作成することもできます。 例など出したいところですが、もうスキーにいく時間なので、またの機会とい うことで...。 Yasuhiko Kiuchi@Fuji Xerox STDC Kiuchi.pa@Xerox.com kiuchi@s5g.ksp.fujixerox.co.jp -----------