Question: I'm calling ResetPassword action from an Email (ASP.NET MVC 5).

```
http://localhost:34162/Account/ResetPassword?code=BwEA181bAECFMcn1vwPdrctS/wcyncKPxGT9Zx1tDuPwKGpe9H1W7LI3Zm9fM+3aA5Fok5GhLPBHqbtiGfpL8Cmdx7RNC6RJ7d6t9ZgFBwgwYk3zssU1Nh64PWHJAabVG9Wv9VWDNdj+Fz0UA712XA==

```

This is the address in my Browser.

However, in debug I receive this string in the ResetPassword Action:

```
    // GET: /Account/ResetPassword
    [AllowAnonymous]
    public ActionResult ResetPassword(string code)
    {
        return code == null ? View("Error") : View();
    }

```

The 'code' is:

```
BwEA181bAECFMcn1vwPdrctS/wcyncKPxGT9Zx1tDuPwKGpe9H1W7LI3Zm9fM 3aA5Fok5GhLPBHqbtiGfpL8Cmdx7RNC6RJ7d6t9ZgFBwgwYk3zssU1Nh64PWHJAabVG9Wv9VWDNdj Fz0UA712XA==

```

i.e., it is not url-encoded and of course password is not reset with invalid token message.

What can I do for getting the right string in the Action?

Answer: 
Setting GOGC=off improved performance (down to less than 100ms). Why?
becaue of [escape analysis](https://github.com/golang/go/wiki/CompilerOptimizations#escape-analysis-and-inlining). When you build with `go build -gcflags -m` the compiler prints whatever allocations escapes to heap. It really depends on your machine and GO compiler version but when the compiler decides that the allocation should move to heap it means 2 things:
1. the allocation will take longer (since "allocating" on the stack is just 1 cpu instruction)
2. the GC will have to clean up that memory later - costing more CPU time
for my machine, the allocation of 65536 bytes escapes to heap and 65535 doesn't.
that's why 1 bytes changed the whole proccess from 200ms to 30s. Amazing..
the reason is very simple. 

const alloc int = 65535

`0x0000 00000 (example.go:8) TEXT "".main(SB), ABIInternal, $65784-0`

const alloc int = 65536

`0x0000 00000 (example.go:8) TEXT "".main(SB), ABIInternal, $248-0`

the difference is where the slice are created.