对Clojure平台源代码的简要介绍揭示:
Class到Clojure函数,该函数实现了协议Class.(它实际上是一个名为的自定义类的实例MethodImplCache.)Class第一个参数并在哈希表中进行查找.Class入哈希表中,以便下次可以直接找到它.Class及其相应的方法实现都缓存在实例变量中,如果Class下次调度相同,则用于绕过哈希查找.MethodImplCache如上所述解决对协议方法的调用.reify获得延伸的协议,或者如果您使用匿名类的实例deftype或defrecord使其中延伸的协议,一个新的类.在任何这种情况下,您将获得Class实现生成的接口的对象.这似乎意味着当扩展到任意类时,协议方法调用应该比普通的Clojure函数调用慢.与reify/ deftype/ 一起使用时的性能defrecord应该更好,如果你内联扩展协议,而不是单独调用extend-protocol或extend-type.
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |