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