评论者:alexmiller
我同意,不加任何修饰地这样说会是一个很好的事情。
在hasheq中添加更多分支确实有一定的代价 - 添加这些集合检查会影响每个hasheq。运行完整的Clojure构建,我看到以下这组类,其中出现了>100次这种情况(注意,这其中的Java集合实际上并不存在,Clojure构建本身并没有这种情况)
clojure.lang.Var 107001502 java.lang.Class 2651389 java.lang.Character 2076322 java.util.UUID 435235 java.util.Date 430956 clojure.lang.Compiler$LocalBinding 116830 java.lang.Boolean 112361 java.util.regex.Pattern 325
我们将在每个hasheq的路径中添加4个额外的instanceof检查。这也可能破坏任何JVM内联。
Rich说"hasheq/equiv对于非值的比较没有任何保证",其中Java集合显然属于"非值"类别。