2015-01-15 22 views
3

在java中,我需要告訴ConcurrentHashMap哪種類型的鍵或值是,然後在clojure中如何執行。我可以創建一個新的ConcurrentHashMap而不指定鍵或值的類型,但我認爲如果我可以指定類型,那麼性能可能會更好。那麼如何指定密鑰爲String,值爲Int如何在clojure中使用ConcurrentHashMap時指定類型

+1

即使在Java中,泛型也只是編譯時的事情,並不反映在字節碼中,並且最終不會與性能有關。 – noisesmith

回答

2

ConcurrentHashMap的性能不應受類型參數的影響。在java中,類型參數僅由編譯器使用,並在編譯時擦除。

2

Clojure地圖可以容納任何類型的值,也無法限制它接受的類型作爲鍵/值或提示編譯器對某些類型進行優化。

然而,有一種方法可以提示參數和綁定的類型以避免反射。雖然如果您的問題與您遇到的atom is slow when using it with big map問題有關,我很確定指定地圖的類型不會產生任何影響,因爲Clojure PersistentHashMap在每個鍵上都使用Util.hasheq來計算其散列值。

相關問題