Go 1.2 benchmark speed as a function of stack frame size (amd64)

Russ Cox
October 2013

Benchmarks were run on a 2.27 GHz Intel Xeon E5520 with four cpus of four cores each using tip as of October 1 (664c8763de42). GOOS=linux, GOARCH=amd64, GOMAXPROCS=1.

The “extra stack” added to a jumbo frame (the padding added for frame allocated for a single function that needs more than the minimum frame size) varied along with the frame size, at frame size / 4, but capped at 8kB (so a 4kB minimum frame has a 1kB additional stack, 8kB has 2kB, ..., 32kB and above have 8kB).

Each benchmark was run 12 times with -test.benchtime=5s. The graph plots the middle three quartiles of the runs (25%, 50%, 75%), normalized to the median run time of the 4kB stack run. Hover over the lines to see raw data.