评论由: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集合显然属于"非值"类别。