我有以下數據結構:爲什麼在這個特定代碼中的Map查找花費了如此長的時間?
val set: scala.collection.immutable.Set[String] = ...
val test1: scala.collection.immutable.Map[String,scala.collection.immutable.Set[String]] = ...
val test2: Array[scala.collection.immutable.Set[String]] = ...
set
包含約60000 entires。 test1
有兩個條目(「一個」和「兩個」),並且每個條目類似於set
。 test2
與test1
類似,但是鍵是0和1。
運行test1.get("one").get.contains("somestring")
需要很長時間(約1秒),但運行test2(0).contains("somestring")
是非常快的。
我不太明白爲什麼會有這麼大的差異。有任何想法嗎?
如果你認爲地圖有「one」作爲鍵入,那麼你應該調用'test1(「one」)。contains(「somestring」)' – Kigyo
@Kigyo感謝你的提示,它絕對看起來更好。然而,'apply'方法與我測試中的'get'方法具有相同的性能。 –
像其他人一樣說:我們需要更多關於您的代碼的信息。 – Kigyo