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