天天看點

hp電腦java圖檔抖動_HPPC:高效的Java集合庫

HPPC的設想和目标

設想

程式員知道自己在做什麼,并可能希望直接通路特定集合的類的内部存儲(例如,不使用預定義的疊代器)絕大多數情況下程式使用單線程通路。例如,有一個在并發修改的重複驗證的小點。使用原始集合的程式在開發期間使用單元測試和回歸測試,是以他們在生産系統中的行為不會被嚴格驗證(我們可以假設使用集合類的代碼不會違反給出的一組斷言)

從上面這些假設建立以下設計思想:

在HPPC中資料類型盡可能簡單,對終端代碼裡的任何優化公開其内部存儲。參數驗證和狀态有效性校驗可以使用斷言。這意味着限制僅僅能夠檢查請求是否在運作是發出(java1.4版本以上),當程式被測試和驗證時,它運作從限制中檢查不會有額外的開銷。我們試圖避免複雜的接口層次,盡管為了更明确而定義了特定的接口。程式員在設計時應該還是會選擇合适的資料結構,并且應該知道自己在做什麼。HPPC為大多數普通任務例如,過濾,疊代以及合并提供了工具,但是這些工具通常比實作低層次的對資料存儲的直接通路更昂貴(如果需要的話可以使用)。對資料序列化沒有特别的支援。這個實作不是線程安全的,并且不會試圖提供快速的并發問題檢測。

設計與實作

我們希望HPPC類模闆可以實作為普通的Java類,以便典型的程式設計工具可用于開發,測試等。我們希望HPPC類模闆可被用作通常的集合類(适用于封裝的數值類型或其它對象類型),但同時我們希望特殊的類能夠自動轉化為一般類型(為了限制記憶體消耗并且提高效率由于JIT優化)

接口以及與Java集合API的關系

HPPC并不是嚴格按照Java集合API來制定的,盡管為了更便捷地使用我們的确盡量讓HPPC API接近Java集合API。在很大程度上HPPC中缺少一個特别的是“視圖”部分(子清單或具有鍵或值的集合)。特定的類提供了這些視圖(例如ObjectObjectHashMap),但是對大部分來說,提供特殊的方法以接收範圍和閉合的過濾器。如果表現仍不盡人意,每一個類的内部可用于直接操作。Java集合類和HPPC類之間的基本關系見下表。

hp電腦java圖檔抖動_HPPC:高效的Java集合庫

相應類型的方法級的API也相似,但差異也是存在的(參考相應類的Java文檔)。

下面讓我們來看看它的實作方法,HPPC的示例很少,這裡引用的是官方示例。

1.建立一個Java項目,記得下載下傳并引入HPPC的jar包以及JUnit庫。

2.将示例中的Helpers和HppcExample_001_IteratingOverLists類複制到相應的包下

3.運作單元測試,可以看到由HPPC實作的List類速度的确快了不少,至于其它的,大家也可以一一試驗。

hp電腦java圖檔抖動_HPPC:高效的Java集合庫

開發資源

下載下傳 v0.7.1、JavaDoc APIv0.7.0、JavaDoc API

API概述代碼示例FAQ郵件清單

官方網站:https://labs.carrotsearch.com/hppc.html

開源位址:https://github.com/carrotsearch/hppc