Al principio supuse que cada clase de colección recibiría un método adicional par
que convertiría la colección en una estructura de datos paralelos adecuada (como map
devuelve la mejor colección para el tipo de elemento en Scala 2.8).¿Cuál es la forma preferida de usar las colecciones paralelas en Scala?
Ahora parece que algunas clases de colección apoyar un método de par
(e. G. Array) pero otros tienen toParSeq
, toParIterable
métodos (e. G. Lista). Esto es un poco raro, ya que Array no se usa o recomienda con frecuencia.
¿Cuál es la razón para eso? ¿No sería mejor tener un par
disponible en todas las clases de colección haciendo lo "correcto"?
Si tengo datos que pueden procesarse en paralelo, ¿qué tipos debo usar? Los rasgos en scala.collection
o el tipo de la implementación directamente?
¿O debería preferir Arrays
ahora, porque parecen ser más baratas de paralelizar?
Esto parece como que solo hay un '.sorted' en' SeqLike', por lo que tienes que hacer 'items.toSeq.sorted' en lugar de solo' items.sorted'. Entonces, ¿por qué tener todos los métodos '.toParIterable' etc., en lugar de simplemente decirle a la gente que haga' items.toArray.par' cuando 'items' no es paralelizable? – Steve
@Steve - Existe la posibilidad de que los métodos 'toParIterable' no tengan que hacer una copia de los datos subyacentes. Por lo tanto, aunque son lentas, ocasionalmente podrían ser un buen compromiso (por ejemplo, al atravesar la lista o lo que sea rápido en comparación con el cálculo en cada elemento de la lista). –