scala - google - meta title html
¿Se pueden usar vistas con colecciones paralelas? (1)
Consulte "Un marco genérico de colección paralela" , el artículo de Martin Odersky y otros que analiza las nuevas colecciones paralelas. La página 8 tiene una sección "Vistas paralelas" que habla sobre cómo la view
y la par
se pueden usar juntas, y cómo esto puede brindar los beneficios de rendimiento tanto de las vistas como de la computación paralela.
En cuanto a su ejemplo específico, ese es definitivamente un error. El método exists
también se rompe, y tenerlo en una lista lo rompe para todas las demás listas, por lo que creo que es un problema donde las operaciones que pueden abortarse en parte ( find
y exists
pueden detenerse una vez que tienen una respuesta) logran romper el grupo de hilos de alguna manera. Podría estar relacionado con el error con excepciones lanzadas dentro de funciones pasadas a colecciones paralelas . Si es así, debería fijarse en 2.10.
El lenguaje para encontrar un resultado dentro de un mapeo de una colección es algo como esto:
list.view.map(f).find(p)
donde list
es una List[A]
, f
es un A => B
, y p
es un B => Boolean
.
¿Es posible utilizar la view
con colecciones paralelas? Lo pregunto porque estoy obteniendo algunos resultados muy extraños:
Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0).
Type in expressions to have them evaluated.
Type :help for more information.
scala> val f : Int => Int = i => {println(i); i + 10}
f: Int => Int = <function1>
scala> val list = (1 to 10).toList
list: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> list.par.view.map(f).find(_ > 5)
1
res0: Option[Int] = Some(11)
scala> list.par.view.map(f).find(_ > 5)
res1: Option[Int] = None