2016-07-03 7 views
1

Я приурочил следующие два, и кажется, что они оба занимают одинаковое количество времени. Есть ли какая-то польза от использования другого?Scala Map -> Reduce vs. FoldRight

(1 to 24).foldRight(List[Int]())((i, l) => l ::: generateList(signs, i)) 

против

(1 to 24).map(i => generateList(signs, i)).reduce(_ ::: _) 

P.S. в моем случае использования порядок не имеет значения.

+2

Возможный дубликат [Разница между сокращением и сгибанием/сгибанием в функциональном программировании (в частности, Scala и Scala API)?] (Http://stackoverflow.com/questions/25158780/difference-between-reduce-and-foldleft-fold -in-functional-programming-particula) – marios

ответ

4

foldRight работает на заказ, map является (теоретически) параллелизуемым, потому что его порядок не определен. Я не считаю, что он параллелен в текущем времени выполнения scala - просто он может быть в будущем или на разных платформах.

+2

'someCollection.par' можно распараллеливать, если это возможно (http://docs.scala-lang.org/overviews/parallel-collections/overview.html) –

 Смежные вопросы

  • Нет связанных вопросов^_^