If you are doing “anything” which such large objects - doesn’t that dwarf the 
time to increase the stack?

> On Jul 1, 2021, at 9:28 AM, tapi...@gmail.com <tapir....@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 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.
>>> 
>>> -- 
>>> 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.
> 
> -- 
> 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/42aabf7f-7aa5-43f9-915b-f49f41f8856fn%40googlegroups.com.

-- 
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/8AA89F7E-C48F-4CD1-8607-B1FA99C92423%40ix.netcom.com.

Reply via email to