1. 24 Mar, 2019 1 commit
  2. 23 Mar, 2019 3 commits
  3. 22 Mar, 2019 14 commits
  4. 21 Mar, 2019 14 commits
  5. 20 Mar, 2019 8 commits
    • Josh Bleecher Snyder's avatar
      testing: stop rounding b.N · 03a79e94
      Josh Bleecher Snyder authored
      The original goal of rounding to readable b.N
      was to make it easier to eyeball times.
      However, proper analysis requires tooling
      (such as benchstat) anyway.
      
      Instead, take b.N as it comes.
      This will reduce the impact of external noise
      such as GC on benchmarks.
      
      This requires reworking our iteration estimates.
      We used to calculate the estimated ns/op
      and then divide our target ns by that estimate.
      However, this order of operations was destructive
      when the ns/op was very small; rounding could
      hide almost an order of magnitude of variation.
      Instead, multiply first, then divide.
      Also, make n an int64 to avoid overflow.
      
      Prior to this change, we attempted to cap b.N at 1e9.
      Due to rounding up, it was possible to get b.N as high as 2e9.
      This change consistently enforces the 1e9 cap.
      
      This change also reduces the wall time required to run benchmarks.
      
      Here's the impact of this change on the wall time to run
      all benchmarks once with benchtime=1s on some std packages:
      
      name           old time/op       new time/op       delta
      bytes                 306s ± 1%         238s ± 1%  -22.24%  (p=0.000 n=10+10)
      encoding/json         112s ± 8%          99s ± 7%  -11.64%  (p=0.000 n=10+10)
      net/http             54.7s ± 7%        44.9s ± 4%  -17.94%  (p=0.000 n=10+9)
      runtime               957s ± 1%         714s ± 0%  -25.38%  (p=0.000 n=10+9)
      strings               262s ± 1%         201s ± 1%  -23.27%  (p=0.000 n=10+10)
      [Geo mean]            216s              172s       -20.23%
      
      Updates #24735
      
      Change-Id: I7e38efb8e23c804046bf4fc065b3f5f3991d0a15
      Reviewed-on: https://go-review.googlesource.com/c/go/+/112155Reviewed-by: default avatarAustin Clements <austin@google.com>
      03a79e94
    • Carlos Eduardo Seo's avatar
      cmd/compile/internal, cmd/internal/obj/ppc64: generate new count trailing... · 3023d7da
      Carlos Eduardo Seo authored
      cmd/compile/internal, cmd/internal/obj/ppc64: generate new count trailing zeros instructions on POWER9
      
      This change adds new POWER9 instructions for counting trailing zeros (CNTTZW/CNTTZD)
      to the assembler and generates them in SSA when GOPPC64=power9.
      
      name                 old time/op  new time/op  delta
      TrailingZeros-160    1.59ns ±20%  1.45ns ±10%  -8.81%  (p=0.000 n=14+13)
      TrailingZeros8-160   1.55ns ±23%  1.62ns ±44%    ~     (p=0.593 n=13+15)
      TrailingZeros16-160  1.78ns ±23%  1.62ns ±38%  -9.31%  (p=0.003 n=14+14)
      TrailingZeros32-160  1.64ns ±10%  1.49ns ± 9%  -9.15%  (p=0.000 n=13+14)
      TrailingZeros64-160  1.53ns ± 6%  1.45ns ± 5%  -5.38%  (p=0.000 n=15+13)
      
      Change-Id: I365e6ff79f3ce4d8ebe089a6a86b1771853eb596
      Reviewed-on: https://go-review.googlesource.com/c/go/+/167517Reviewed-by: default avatarLynn Boger <laboger@linux.vnet.ibm.com>
      3023d7da
    • Josh Bleecher Snyder's avatar
      cmd/compile: port callnew to ssa conversion · 23b476a3
      Josh Bleecher Snyder authored
      This is part of a general effort to shrink walk.
      In an ideal world, we'd have an SSA op for allocation,
      but we don't yet have a good mechanism for introducing
      function calling during SSA compilation.
      In the meantime, SSA conversion is a better place for it.
      
      This also makes it easier to introduce new optimizations;
      instead of doing the typecheck walk dance,
      we can simply write what we want the backend to do.
      
      I introduced a new opcode in this change because:
      
      (a) It avoids a class of bugs involving correctly detecting
          whether this ONEW is a "before walk" ONEW or an "after walk" ONEW.
          It also means that using ONEW or ONEWOBJ in the wrong context
          will generally result in a faster failure.
      (b) Opcodes are cheap.
      (c) It provides a better place to put documentation.
      
      This change also is also marginally more performant:
      
      name        old alloc/op      new alloc/op      delta
      Template         39.1MB ± 0%       39.0MB ± 0%  -0.14%  (p=0.008 n=5+5)
      Unicode          28.4MB ± 0%       28.4MB ± 0%    ~     (p=0.421 n=5+5)
      GoTypes           132MB ± 0%        132MB ± 0%  -0.23%  (p=0.008 n=5+5)
      Compiler          608MB ± 0%        607MB ± 0%  -0.25%  (p=0.008 n=5+5)
      SSA              2.04GB ± 0%       2.04GB ± 0%  -0.01%  (p=0.008 n=5+5)
      Flate            24.4MB ± 0%       24.3MB ± 0%  -0.13%  (p=0.008 n=5+5)
      GoParser         29.3MB ± 0%       29.1MB ± 0%  -0.54%  (p=0.008 n=5+5)
      Reflect          84.8MB ± 0%       84.7MB ± 0%  -0.21%  (p=0.008 n=5+5)
      Tar              36.7MB ± 0%       36.6MB ± 0%  -0.10%  (p=0.008 n=5+5)
      XML              48.7MB ± 0%       48.6MB ± 0%  -0.24%  (p=0.008 n=5+5)
      [Geo mean]       85.0MB            84.8MB       -0.19%
      
      name        old allocs/op     new allocs/op     delta
      Template           383k ± 0%         382k ± 0%  -0.26%  (p=0.008 n=5+5)
      Unicode            341k ± 0%         341k ± 0%    ~     (p=0.579 n=5+5)
      GoTypes           1.37M ± 0%        1.36M ± 0%  -0.39%  (p=0.008 n=5+5)
      Compiler          5.59M ± 0%        5.56M ± 0%  -0.49%  (p=0.008 n=5+5)
      SSA               16.9M ± 0%        16.9M ± 0%  -0.03%  (p=0.008 n=5+5)
      Flate              238k ± 0%         238k ± 0%  -0.23%  (p=0.008 n=5+5)
      GoParser           306k ± 0%         303k ± 0%  -0.93%  (p=0.008 n=5+5)
      Reflect            990k ± 0%         987k ± 0%  -0.33%  (p=0.008 n=5+5)
      Tar                356k ± 0%         355k ± 0%  -0.20%  (p=0.008 n=5+5)
      XML                444k ± 0%         442k ± 0%  -0.45%  (p=0.008 n=5+5)
      [Geo mean]         848k              845k       -0.33%
      
      Change-Id: I2c36003a7cbf71b53857b7de734852b698f49310
      Reviewed-on: https://go-review.googlesource.com/c/go/+/167957
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      23b476a3
    • Daniel Martí's avatar
      cmd: update vendored x/tools · fd270d8b
      Daniel Martí authored
      This lets us get rid of a handful of cmd/vet/whitelist/all.txt entries,
      since the stdmethods pass is now happy with the encoding/xml package.
      
      Change-Id: I9de2190984dd00342903967262790c7f6b1f0a75
      Reviewed-on: https://go-review.googlesource.com/c/go/+/168458
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      fd270d8b
    • Damien Neil's avatar
      os: make errors.Is work with ErrPermission et al. · a919b760
      Damien Neil authored
      As proposed in Issue #29934, update errors produced by the os package to
      work with errors.Is sentinel tests. For example,
      errors.Is(err, os.ErrPermission) is equivalent to os.IsPermission(err)
      with added unwrapping support.
      
      Move the definition for os.ErrPermission and others into the syscall
      package. Add an Is method to syscall.Errno and others. Add an Unwrap
      method to os.PathError and others.
      
      Updates #30322
      Updates #29934
      
      Change-Id: I95727d26c18a5354c720de316dff0bffc04dd926
      Reviewed-on: https://go-review.googlesource.com/c/go/+/163058Reviewed-by: default avatarMarcel van Lohuizen <mpvl@golang.org>
      a919b760
    • Clément Chigot's avatar
      cmd/dist: enable cgo for aix/ppc64 · af7b7571
      Clément Chigot authored
      Change-Id: I78be2b0b857d1ea2fb0b6906eb5afd796580f52d
      Reviewed-on: https://go-review.googlesource.com/c/go/+/164019
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      af7b7571
    • Clément Chigot's avatar
      cmd/dist, misc/cgo: enable tests for aix/ppc64 · 125d187f
      Clément Chigot authored
      Some cgo tests aren't yet available on aix/ppc64.
      -shared and -static don't work as expected and will be fixed latter.
      
      Updates #30565
      
      Change-Id: Ic59cabe685cb1cbdf89a8d1d1a1d2c4b0e8ef442
      Reviewed-on: https://go-review.googlesource.com/c/go/+/164018
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      125d187f
    • Clément Chigot's avatar
      cmd/nm: fix cgo tests for aix/ppc64 · 1b5b08d1
      Clément Chigot authored
      This commit handles AIX cgo in cmd/nm tests.
      
      Change-Id: I6753a0102e4f2c4c7bd4d7c999f62a0cb3d2183c
      Reviewed-on: https://go-review.googlesource.com/c/go/+/164017
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      1b5b08d1