2015-09-18 3 views
-1

Что лучше всего в исполнении?groupBy и mapValues ​​или карта и toMap

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 может закончиться быстрее. Таким образом, вы не должны просто сравнивать эти фрагменты без использования результата.