

GoPar: Automatic Loop Parallelization of Go Programs - wetherbeei
https://github.com/wetherbeei/gopar

======
JulianMorrison
It's cute, but the work to manually parallelize is pretty light in Go.

    
    
      var a []X
      ...
      done := make(chan bool)
      b := make([]Y,len(a))
      for i, _ := range a {
        go func (j int){
          b[j] = process(a[j])
          done <- true
        }(i)
      }
      for n:=0; n<len(a); n++ { _ = <-done }

~~~
wetherbeei
"Such is modern computing: everything simple is made too complicated because
it’s easy to fiddle with; everything complicated stays complicated because
it’s hard to fix." - Rob Pike

The point is your code is very verbose compared to the original, and anyone
will take at least twice as long trying to figure out the interaction between
channels and goroutine launches vs the sequential version.

for i, v := range a { a[i] = process(v) }

------
codygman
Well this definitely looks interesting, going to check it out asap and test on
my projects.

