A 100-long vector is way too short to show any benefit. goroutines have
start-up, scheduling, and shut-down costs. What happens if you try to
square the largest matrix you can fit into memory (10,000 by 10000?)

On Fri, Feb 19, 2021 at 9:46 AM Yuwen Dai <yuw...@gmail.com> wrote:

> Hi experts,
>
> I'm a newbie to golang.  One of my first ideas to use goroutine is to
> write a matrix multiplying programme:  C = A*B.    I though the calculating
> of  every element of C:  c[i][j] = row i of A  *  column j of B could be
> run by a goroutine.  This is the skeleton of the code:
>
>     t1 := time.Now().UnixNano()  //benchmark
>     rand.Seed(t1)
>     for i := 0; i < n; i++ {
>         ai,_ := get_row(a,i)
>         for j := 0; j < t; j ++ {
>             bj, _ := get_column(b,j)
>             //        c[i][j],_ = dot_product(ai, bj)
>             go func(element *int, ai,bj []int) {
>                 *element,_ = dot_product(ai,bj)
>                 wg.Done()
>             }(&c[i][j], ai, bj)
>         }
>     }
>
>     wg.Wait()  // waiting for all the elements have been calculated
>     t2 := time.Now().UnixNano()
>     fmt.Printf("the dot_product using goroutine costs %v\n", t2 - t1)
>
> As the goroutines will run "concurrently" on my laptop with 8 CPU cores to
> calculate the element of matrix, I thought the code would ran faster than
> not using goroutine.  In fact, it ran slowlier than not using goroutine.
> Any explanation of this?    By the way,  the dimension of  matrix is
> 100x100.
>
> Best regards,
> Yuwen
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/52ef6c0f-7044-4b7e-968c-b894eb52d374n%40googlegroups.com
> <https://groups.google.com/d/msgid/golang-nuts/52ef6c0f-7044-4b7e-968c-b894eb52d374n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAOUkXSpvBq9ctKGwXC4VHT-xfBm2j4vsODnYgUgeO_ivbG-uSw%40mail.gmail.com.

Reply via email to