簡體   English   中英

HashMap與數組在以下方法中的性能差異

[英]HashMap vs array performance difference in following approach

為了解決動態編程問題,我使用了兩種方法來存儲表條目,一種方法是使用多維數組ex:tb [m] [n] [p] [q],另一種方法是使用hashmap並使用第一種方法的索引來使要使用的字符串作為“ m,n,p,q”中的鍵。 但是,首先輸入的一種方法在2分鍾內完成,而另一種則需要3分鍾以上。 如果hashmap和array的訪問時間漸近相等,那么為什么性能會有如此大的差異呢?

這里提到的

HashMap使用下面的數組,因此它永遠不會比正確使用數組快。

沒錯,數組的訪問和HashMap的訪問時間在O(1)中,但這僅表示它與輸入大小或集合的當前大小無關。 但這並沒有說明每個動作必須完成的實際工作。

要訪問陣列的條目,您必須計算條目的內存地址。 這很容易,因為array's memory address + (index * size of entity)

要訪問HashMap的條目,您首先必須對給定的鍵進行哈希處理(這需要很多cpu周期),然后使用包含列表的哈希(取決於HashMap的實現細節)來訪問HashMap數組的條目。最后,您必須線性搜索列表中的正確條目(大多數情況下這些列表很短,因此將其視為O(1))。

因此,您會發現它更像是數組的O(10)和O(5000)哈希映射。 或更精確的T(Array access)用於數組, T(hashing) + T(Array access) + T(linear search)用於HashMaps,其中T(X)作為實際動作時間x

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM