Commit f3a29f1f authored by Josh Bleecher Snyder's avatar Josh Bleecher Snyder

cmd/compile: preallocate storage for three Value args

benchstat master2 arg3b
name      old time/op    new time/op    delta
Template     441ms ± 4%     444ms ± 6%    ~     (p=0.335 n=22+25)
GoTypes      1.51s ± 2%     1.51s ± 2%    ~     (p=0.129 n=25+21)
Compiler     5.59s ± 1%     5.56s ± 2%  -0.65%  (p=0.001 n=24+21)

name      old alloc/op   new alloc/op   delta
Template    85.6MB ± 0%    85.3MB ± 0%  -0.40%  (p=0.000 n=25+24)
GoTypes      307MB ± 0%     305MB ± 0%  -0.38%  (p=0.000 n=25+25)
Compiler    1.06GB ± 0%    1.05GB ± 0%  -0.43%  (p=0.000 n=25+25)

name      old allocs/op  new allocs/op  delta
Template     1.10M ± 0%     1.09M ± 0%  -1.04%  (p=0.000 n=25+25)
GoTypes      3.36M ± 0%     3.32M ± 0%  -1.13%  (p=0.000 n=25+24)
Compiler     13.0M ± 0%     12.9M ± 0%  -1.12%  (p=0.000 n=25+25)

Change-Id: I1280b846e895c00b95bb6664958a7765bd819610
Reviewed-on: https://go-review.googlesource.com/20296Reviewed-by: default avatarKeith Randall <khr@golang.org>
parent b2018719
...@@ -29,7 +29,6 @@ Optimizations (better compiled code) ...@@ -29,7 +29,6 @@ Optimizations (better compiled code)
Optimizations (better compiler) Optimizations (better compiler)
------------------------------- -------------------------------
- OpStore uses 3 args. Increase the size of Value.argstorage to 3?
- Handle signed division overflow and sign extension earlier - Handle signed division overflow and sign extension earlier
Regalloc Regalloc
......
...@@ -22,7 +22,7 @@ func TestSizeof(t *testing.T) { ...@@ -22,7 +22,7 @@ func TestSizeof(t *testing.T) {
_32bit uintptr // size on 32bit platforms _32bit uintptr // size on 32bit platforms
_64bit uintptr // size on 64bit platforms _64bit uintptr // size on 64bit platforms
}{ }{
{Value{}, 60, 104}, {Value{}, 64, 112},
{Block{}, 124, 232}, {Block{}, 124, 232},
} }
......
...@@ -38,8 +38,8 @@ type Value struct { ...@@ -38,8 +38,8 @@ type Value struct {
// Source line number // Source line number
Line int32 Line int32
// Storage for the first two args // Storage for the first three args
argstorage [2]*Value argstorage [3]*Value
} }
// Examples: // Examples:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment