You can find what's the difference between the two programs yourself by
profiling it, it will show the overhead of context switch, goroutine
initialization, GC and so forth.

Heres some good resources:
https://blog.golang.org/pprof
https://youtu.be/nok0aYiGiYA

On Fri, 19 Feb 2021, 11:46 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/CAE%3DAWBWEGiww1398xtSGvB5CyBtoi7rr1orTRC6%3DEtLAfUUTtA%40mail.gmail.com.

Reply via email to