Я сделал небольшое поверхностное чтение на inlining declamations и прочитал на relevant CLHS pages, но не может легко увидеть явный ответ.Возможно ли `inline`` метод`?
Разумно ли (declaim (inline foo))
когда foo
объявляется с использованием defmethod
, а не defun
(последний из которых явно крытого случай)? Как насчет foo
является функция reader
class
? Является ли эффект этого вложения заметным в плане производительности? Является ли она специфичной для реализации?
Для простых методов при жестких ограничениях может быть разумно переписать как defun
для производительности, но это иногда сложно или невозможно. Существуют ли общие стратегии оптимизации, которые можно использовать для общих методов Лиспа, не переписывая их как функции?
См. Https://github.com/guicho271828/inlined-generic-function – coredump
@coredump - В соответствии с этим, похоже, что ситуация «встраивание общих функций/методов обычно приводит к незначительным выигрышам в производительности и может быть улучшена в оптимизированном случае за счет использования внешней библиотеки, дополнительной декларации метакласса и более низкой производительности в неоптимизированном случае ». Он доступен из 'quicklisp' как' inlined-generic-function', поэтому было бы экономично исследовать. Знаете ли вы, что он также попадает в регистр 'reader' /' accessor'? А также, хотите опубликовать это как ответ? – Inaimathi
Обратите внимание, что программы Common Lisp не вызывают отдельные методы, а общие функции. –