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