Clojureのシンボル比較
シンボル比較は何よりも速いと期待していると裏切られる。Clojureではシンボルにメタデータをつけられるので等値なシンボルが等価でない。ただキーワードならちゃんと等価になる。
user> (time (dotimes [_ 1000000] (= 'a 'a))) "Elapsed time: 53.835 msecs" nil user> (time (dotimes [_ 1000000] (= :a :a))) "Elapsed time: 5.093 msecs" nil user> (identical? 'a 'a) false user> (identical? :a :a) true