sólo quería probar las colecciones paralelas un poco y me utilizó la siguiente línea de código (en REPL):¿Por qué no es más rápido usando colecciones paralelas?
(1 to 100000).par.filter(BigInt(_).isProbablePrime(100))
contra:
(1 to 100000).filter(BigInt(_).isProbablePrime(100))
Pero la versión paralela no es más rápida. De hecho, incluso se siente un poco más lento (Pero realmente no he medido eso).
¿Alguien tiene una explicación para eso?
Edición 1: Sí, tengo un procesador multi-core
Edición 2: Está bien, "resuelto" el problema mismo. La implementación de isProbablePrime
parece ser el problema y no las colecciones paralelas. Reemplacé isProbablePrime
con otra función para probar la primalidad y ahora obtengo una aceleración esperada.
El paralelismo es solo más rápido si le permite obtener más hardware de arranque, y tiene gastos generales. ¿Scala está configurado para hacer uso de los núcleos extra? –
No sabía que tenía que configurar nada. ¿Tienes más información sobre esto? –
No se necesita configuración aquí; Scala busca el número de núcleos disponibles y delega el trabajo en un grupo de Fork-Join del tamaño adecuado. –