评论由:alexmiller 发布
我同意,这样说是没有问题的。
在hasheq中添加更多分支的确有代价——这些集合检查会影响所有的hasheq。在运行完整的Clojure构建时,我发现以下具有>100个此类发生位置的类集(请注意,这些Java集合中恰好0个存在于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 集合也属于“非值”类别。