ConcurrentHashMap和oscache等物件快取有何區別

liujian1979發表於2010-03-26
最近我做了個測試,測試結果如下:
在IBM筆記本T61下測試
啟5個執行緒往Hashtable和ConcurrentHashMap裡面寫資料。每個執行緒併發隨機寫100,000個資料到Hashtable和ConcurrentHashMap裡(鍵值是Integer),上一過程完成之後啟5個執行緒併發隨機從Hashtable和ConcurrentHashMap裡(鍵值是Integer)讀資料,每個執行緒讀100,000條。
這一過程十次測試平均時間如下:
The average time(Run 10times) of ConcurrentHashMap is :690ms
The average time(Run 10times) of Hashtable is :834ms

結論:ConcurrentHashMap比Hashtable效能最佳化20.8%。

等存入過程完成之後,啟100個執行緒併發隨機從Hashtable和ConcurrentHashMap裡(鍵值是Integer)讀資料,每個執行緒讀100,000條。
這一過程十次測試平均時間如下:
The average time(Run 10times) of concurrentHashMap is :2721
The average time(Run 10times) of Hashtable is :5870

結論:ConcurrentHashMap比Hashtable效能最佳化115.7%。

與大家分享下

疑問:
我理解的也可以把資料庫中表以物件形式存入ConcurrentHashMap中可以看作是物件快取嗎?,那oscache等開源快取記憶體只在分散式上有優勢嗎?比如幾個JVM共用一個快取? 請幫我解釋下,謝謝!

相關文章