Что лучше всего в исполнении?groupBy и mapValues или карта и toMap
all.groupBy(_.id).mapValues(_.head)
Или
all.map(l => (l.id, l)).toMap
Приветствия
Что лучше всего в исполнении?groupBy и mapValues или карта и toMap
all.groupBy(_.id).mapValues(_.head)
Или
all.map(l => (l.id, l)).toMap
Приветствия
В общем, единственный способ ответить на это его эталонное тестирование и на JVM лучший подход для сравнительного анализа является JMH.
Однако для этого конкретного случая он будет сильно зависеть от шаблона использования результата, среди прочего. mapValues
фактически не применяет функцию к значениям, это делается только тогда, когда обращается результат Map
. Так, если, например, вы получите доступ к нему один раз, а не для всех ключей, я ожидал бы, что mapValues
будет быстрее, а если вы будете обращаться к одному и тому же ключу, то map
может закончиться быстрее. Таким образом, вы не должны просто сравнивать эти фрагменты без использования результата.
«[Если у вас есть две лошади, и вы хотите знать, какая из них быстрее, чем гонка ваших лошадей] (http://ericlippert.com/2012/12/17/performance-rant/)». – dcastro