2024年Clojure调查!中分享您的想法。

欢迎!请查看关于页面以了解更多有关该服务的信息。

+2
协议

在最近的一次对话中,我了解到一些开发人员为了避免性能问题而避免或反对使用 satisfies?。我被告诉“只看实现,你会满头大汗”。

在这个例子中,实现在 find-protocol-impl 中,需要检查元数据,遍历继承链以及实现的接口。

对于寻找特定类的协议实现的部分看起来非常值得缓存,除了将来可以扩展协议这一事实。

是否有意义来缓存这个,以及让 extend-* 使缓存失效?或者另有一种方法,比如有一个标志(例如,-J-Dclojure.cache-protocols=true),在生产中使用,其中你知道在查找发生之前,所有协议实现都将被加载?

1 答案

0

被选择
 
最佳答案

我认为一个关于缓存方案的提案会受到欢迎。我会稍后在其中记录一个工单以进一步讨论。


稍微查看了一下,似乎有几张票涉及到satisfies?,第一张是https://clojure.atlassian.net/browse/CLJ-1814,它似乎依赖于https://clojure.atlassian.net/browse/CLJ-2426的解决方案。这两张票都有很多讨论。

...