- About Scala
- Documentation
- Code Examples
- Software
- Scala Developers
[Fwd: Re: Arrays, Lists and parallelism]
Wed, 2009-10-14, 18:05
Brian replied to me directly and forgot to include the list . . .
-------- Forwarded Message --------
> From: Russel Winder
> To: brian@blumenfeld-maso.com
> Subject: Re: [scala-user] Arrays, Lists and parallelism
> Date: Wed, 14 Oct 2009 17:28:25 +0100
>
> Brian,
>
> On Wed, 2009-10-14 at 16:19 +0000, brian@blumenfeld-maso.com wrote:
> > Russel,
> >
> > Whatsks the context here? How are the Futures getting evaluated?
> >
> > Brian Maso
>
> I guess I should have sent the fuller version of the email. Sorry about
> that. Do you think I should send this to the list -- I am replying to
> your email which was a private one not to the list.
>
> The fragment:
>
> val partialSums = new Array[Future[Double]] ( numberOfThreads )
> for ( index <- 0 until partialSums.size ) {
> partialSums ( index ) = Futures.future {
> . . .
> }
> }
> var sum = 0.0
> for ( p <- partialSums ) { sum += p ( ) }
>
> works fine. The fragment:
>
> val partialSums = for ( index <- 0 until numberOfThreads ) yield
> Futures.future {
> . . .
> }
> var sum = 0.0
> for ( p <- partialSums ) { sum += p ( ) }
>
> runs sequentially! The fragment:
>
> val partialSums = ( for ( index <- 0 until numberOfThreads ) yield
> Futures.future {
> . . .
> } ).toArray
> var sum = 0.0
> for ( p <- partialSums ) { sum += p ( ) }
>
> runs in parallel. So when it comes to parallel computations, Arrays
> rule and Lists suck :-)
>