3
我相對新的Clojure並具有下列簡單的函數Clojure:爲什麼=和.equals字符串有不同的表現?
(defn find-func
[what seq]
(filter #(.equals what %) seq)
)
我注意到,上述功能是比當我代替.equals與=這樣顯著較慢:
(defn find-func
[what seq]
(filter #(= what %) seq)
)
我觀察到當我從REPL在jdk 1.8.0_25上運行它時,clojure 1.8:
(find-func "10" (map str (range 0 800000)))
這是爲什麼?我雖然從另一個stackoverflow的答案(Stack overflow question)that =調用.equals,所以不應該有任何性能差異。從那時起是否進行了優化?謝謝你的澄清。
最有可能非常連接。我發現相同的性能差異適用於(.endsWith%)和(clojure.string.ends-with?what%) – Vojta