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的解决方案。这两个工单都围绕着相当多的讨论。

...