On Thursday, July 1, 2021 at 10:46:50 AM UTC-4 ren...@ix.netcom.com wrote:
> If you are doing “anything” which such large objects - doesn’t that dwarf > the time to increase the stack? > Yes, the unreachable code in the 2nd goroutine dwarts the stack grow time much. > > On Jul 1, 2021, at 9:28 AM, tapi...@gmail.com <tapi...@gmail.com> wrote: > > > > I tried to find a way to initialize the size of the stack of a new created > goroutine in advance to avoid several stack copies. > Before this fix, the efficiencies of the two new goroutines are almost the > same. > After the fix, the second goroutine uses much less time than the first one. > > package main > > import "fmt" > import "time" > > const N = 1024 * 1024 > var n byte = 123 > > func f(v [N]byte, n int) { > if n > 0 { > f(v, n-1) > } > } > > func main() { > var c = make(chan time.Duration, 1) > go func() { > start := time.Now() > f([N]byte{}, 32) > c <- time.Since(start) > }() > fmt.Println(<-c) > go func() { > start := time.Now() > if n == 0 { > var a, b, c, d, e, f, g [N*10]byte > n = a[n] + b[n] + c[n] + d[n] + e[n] + f[n] + g[n] > } > f([N]byte{}, 32) > c <- time.Since(start) > }() > fmt.Println(<-c) > } > > > > On Thursday, July 1, 2021 at 2:23:45 AM UTC-4 axel.wa...@googlemail.com > wrote: > >> Okay, *now* I get what you are trying to say. I agree that it seems >> inefficient to call it more than once, which is why the code tries to >> optimize for that. I don't know why that optimization doesn't trigger in >> your case - you might want to try and investigate that. There might be a >> good reason why it doesn't (for example, I'll note that your code might be >> using the system stack, which, AIUI, is special). >> >> As always, if you are experiencing a real problem due to this, you might >> want to open an issue. >> >> On Thu, Jul 1, 2021 at 3:04 AM tapi...@gmail.com <tapi...@gmail.com> >> wrote: >> >>> >>> >>> On Wednesday, June 30, 2021 at 8:46:19 PM UTC-4 >>> axel.wa...@googlemail.com wrote: >>> >>>> On Thu, Jul 1, 2021 at 2:34 AM tapi...@gmail.com <tapi...@gmail.com> >>>> wrote: >>>> >>>>> >>>>> >>>>> On Wednesday, June 30, 2021 at 11:56:45 AM UTC-4 Brian Candler wrote: >>>>> >>>>>> So I think what you're asking is, "under what scenario does the code >>>>>> in L1066-1069 >>>>>> <https://github.com/golang/go/blob/d19a53338fa6272b4fe9c39d66812a79e1464cd2/src/runtime/stack.go#L1065-L1070> >>>>>> >>>>>> get run?" - is that right? >>>>> >>>>> >>>>> Almost true. >>>>> >>>>> Whether or not it should run, growing the stack from 2048 to 512M in >>>>> 18+ steps looks not right. >>>>> >>>> >>>> Why? 2048 • 2^18 = 2^11 • 2^18 = 2^29 = 536870912. >>>> Seems like exactly the expected result. >>>> >>> >>> It looks each step calls copystack once. >>> Isn't one step more efficient? >>> >>> >>>> >>>> >>>>> >>>>> >>>>>> >>>>>> On Wednesday, 30 June 2021 at 14:21:21 UTC+1 tapi...@gmail.com wrote: >>>>>> >>>>>>> Sorry, I post the wrong anchor. It is line 1068: >>>>>>> https://github.com/golang/go/blob/d19a53338fa6272b4fe9c39d66812a79e1464cd2/src/runtime/stack.go#L1068 >>>>>>> >>>>>>> On Wednesday, June 30, 2021 at 5:08:30 AM UTC-4 Brian Candler wrote: >>>>>>> >>>>>>>> On Wednesday, 30 June 2021 at 08:25:59 UTC+1 tapi...@gmail.com >>>>>>>> wrote: >>>>>>>> >>>>>>>>> >>>>>>>>> It looks this line >>>>>>>>> https://github.com/golang/go/blob/master/src/runtime/stack.go#L1078 >>>>>>>>> never gets executed. >>>>>>>>> >>>>>>>>> >>>>>>>> Can you quote the line you're referring to? Line numbers can shift >>>>>>>> up and down as commits are made to the master branch. Right now, L1078 >>>>>>>> is a >>>>>>>> blank line. >>>>>>>> >>>>>>> -- >>>>> >>>> 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...@googlegroups.com. >>>>> >>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/golang-nuts/5fab5a6e-5dd5-4df2-8b31-4a51aa825f92n%40googlegroups.com >>>>> >>>>> <https://groups.google.com/d/msgid/golang-nuts/5fab5a6e-5dd5-4df2-8b31-4a51aa825f92n%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...@googlegroups.com. >>> >> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/golang-nuts/a06d022b-06c2-4379-b33b-56886ebaf1dbn%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/golang-nuts/a06d022b-06c2-4379-b33b-56886ebaf1dbn%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...@googlegroups.com. > > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/42aabf7f-7aa5-43f9-915b-f49f41f8856fn%40googlegroups.com > > <https://groups.google.com/d/msgid/golang-nuts/42aabf7f-7aa5-43f9-915b-f49f41f8856fn%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/cf1ffc78-6af4-4616-a1dd-cf32200f86ebn%40googlegroups.com.