私はinlining declamationsにいくつかザッ読み取りを行い、relevant CLHS pagesをよく読んで、しかし簡単に明確な答えを見ることはできませんしました。`メソッド`を `インライン化 'することは可能ですか?
はそれがfoo
は(の後者は明示的にカバーケースである)というよりも、defun
defmethod
を使用して宣言されたときに(declaim (inline foo))
に合理的ですか? foo
がclass
のreader
機能の場合はどうですか?このインライン化の効果はパフォーマンス面で顕著ですか?それは何らかの実装固有のものですか?
厳密な制約のもとで、単純な方法では、具体的にはdefun
のように書き直すのが妥当かもしれませんが、それは時には困難または不可能です。 Common Lispのメソッドを関数として書き直さなくてもそれを利用できる一般的な最適化戦略はありますか?それは呼ばれているものの機能を事前に確認することができたときの方法は、CLコンパイラがそれを行うことができますので、メソッドをインライン化
を参照してください。https://github.com/guicho271828/inlined-generic-function – coredump
@coredump - それによると、「インライン化する汎用関数/メソッドをインライン化すると、通常はパフォーマンスが無視できるほどに向上し、最適化されたケースでは、外部ライブラリを使用するコスト、余分なメタクラス宣言、最適化されていないケースではパフォーマンスが低下します。 'inline-generic-function'として' quicklisp'から利用できるので、探索するのが経済的です。 'reader' /' accessor'の場合にも当てはまるかどうか分かりますか?また、答えとして投稿したいですか? – Inaimathi
Common Lispプログラムは個々のメソッドを呼び出すのではなく、汎用関数を呼び出すことに注意してください。 –