2015-09-18 16 views
-1

什麼是最好的表現?groupBy和mapValues或map和地圖

all.groupBy(_.id).mapValues(_.head) 

或者

all.map(l => (l.id, l)).toMap 

乾杯

+2

「[如果你有兩匹馬,並且你想知道兩匹馬哪一匹馬跑得更快,那就馬匹](http://ericlippert.com/2012/12/17/performance-rant/)」。 – dcastro

回答

0

一般來說回答的唯一方法就是對它進行基準測試,並在JVM爲基準,最好的辦法是JMH

但是,對於這種特定情況,它將強烈依賴於結果的使用模式等等。 mapValues實際上沒有將該函數應用於值,只有在訪問結果Map時纔會執行此操作。所以如果例如你只能訪問一次,而不是所有的密鑰,我期望mapValues更快,而如果你重複訪問相同的密鑰,map可能會更快。因此,您不應該僅僅在不使用結果的情況下對這些片段進行基準測試。