在最近的一次对话中,我了解到一些开发人员为了避免性能问题而避免或反对使用 satisfies?
。我被告诉“只看实现,你会满头大汗”。
在这个例子中,实现在 find-protocol-impl
中,需要检查元数据,遍历继承链以及实现的接口。
对于寻找特定类的协议实现的部分看起来非常值得缓存,除了将来可以扩展协议这一事实。
是否有意义来缓存这个,以及让 extend-*
使缓存失效?或者另有一种方法,比如有一个标志(例如,-J-Dclojure.cache-protocols=true
),在生产中使用,其中你知道在查找发生之前,所有协议实现都将被加载?