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.