1. 22 Aug, 2018 40 commits
    • Brian Kessler's avatar
      math/big: optimize multiplication by 2 and 1/2 in float Sqrt · 3fd62ce9
      Brian Kessler authored
      The Sqrt code previously used explicit constants for 2 and 1/2.  This change
      replaces multiplication by these constants with increment and decrement of
      the floating point exponent directly.  This improves performance by ~7-10%
      for small inputs and minimal improvement for large inputs.
      
      name                 old time/op    new time/op    delta
      FloatSqrt/64-4         1.39µs ± 0%    1.29µs ± 3%   -7.01%  (p=0.016 n=4+5)
      FloatSqrt/128-4        2.84µs ± 0%    2.60µs ± 1%   -8.33%  (p=0.008 n=5+5)
      FloatSqrt/256-4        3.24µs ± 1%    2.91µs ± 2%  -10.00%  (p=0.008 n=5+5)
      FloatSqrt/1000-4       7.42µs ± 1%    6.74µs ± 0%   -9.16%  (p=0.008 n=5+5)
      FloatSqrt/10000-4      65.9µs ± 1%    65.3µs ± 4%     ~     (p=0.310 n=5+5)
      FloatSqrt/100000-4     1.57ms ± 8%    1.52ms ± 1%     ~     (p=0.111 n=5+4)
      FloatSqrt/1000000-4     127ms ± 1%     126ms ± 1%     ~     (p=0.690 n=5+5)
      
      Change-Id: Id81ac842a9d64981e001c4ca3ff129eebd227593
      Reviewed-on: https://go-review.googlesource.com/130835Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      3fd62ce9
    • Martin Möhrmann's avatar
      runtime: skip TestGcSys on Windows · 28fbf5b8
      Martin Möhrmann authored
      This is causing failures on TryBots and BuildBots:
      --- FAIL: TestGcSys (0.06s)
          gc_test.go:27: expected "OK\n", but got "using too much memory: 39882752 bytes\n"
      FAIL
      
      Updates #27156
      
      Change-Id: I418bbec89002574cd583c97422e433f042c07492
      Reviewed-on: https://go-review.googlesource.com/130875
      Run-TryBot: Martin Möhrmann <moehrmann@google.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      28fbf5b8
    • Alan Donovan's avatar
      reflect: add Value.MapRange method and MapIter type · ede59583
      Alan Donovan authored
      Example of use:
      
      	iter := reflect.ValueOf(m).MapRange()
       	for iter.Next() {
      		k := iter.Key()
      		v := iter.Value()
      		...
      	}
      
      See issue golang/go#11104
      
      Q. Are there any benchmarks that would exercise the new calls to
         copyval in existing code?
      
      Change-Id: Ic469fcab5f1d9d853e76225f89bde01ee1d36e7a
      Reviewed-on: https://go-review.googlesource.com/33572Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      ede59583
    • Yury Smolsky's avatar
      cmd/compile: display Go code for a function in ssa.html · 8c042582
      Yury Smolsky authored
      This CL adds the "sources" column at the beginning of SSA table.
      This column displays the source code for the function being passed
      in the GOSSAFUNC env variable.
      
      Also UI was extended so that clicking on particular line will
      highlight all places this line is referenced.
      
      JS code was cleaned and formatted.
      
      This CL does not handle inlined functions. See issue 25904.
      
      Change-Id: Ic7833a0b05e38795f4cf090f3dc82abf62d97026
      Reviewed-on: https://go-review.googlesource.com/119035
      Run-TryBot: Yury Smolsky <yury@smolsky.by>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      8c042582
    • Brad Fitzpatrick's avatar
      runtime: fix build, rename a since-renamed hasprefix to hasPrefix · 7b8930ed
      Brad Fitzpatrick authored
      I merged CL 115835 without testing it after a rebase. My bad.
      
      Change-Id: I0acc6ed78ea7d718ac2df11d509cfcf4364dfaee
      Reviewed-on: https://go-review.googlesource.com/130815
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarMartin Möhrmann <moehrmann@google.com>
      7b8930ed
    • Iskander Sharipov's avatar
      runtime: remove redundant explicit deref in trace.go · fd7d3259
      Iskander Sharipov authored
      Replaces legacy Go syntax for pointer struct member access
      with more modern auto-deref alternative.
      
      Found using https://go-critic.github.io/overview#underef-ref
      
      Change-Id: I71a3c424126c4ff5d89f9e4bacb6cc01c6fa2ddf
      Reviewed-on: https://go-review.googlesource.com/122895
      Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      fd7d3259
    • Iskander Sharipov's avatar
      runtime: simplify slice expression to sliced value itself · fa6639d6
      Iskander Sharipov authored
      Replace `x[:]` where x is a slice with just `x`.
      
      Found using https://go-critic.github.io/overview.html#unslice-ref
      
      Change-Id: Ib0ee16e1d49b2a875b6b92a770049acc33208362
      Reviewed-on: https://go-review.googlesource.com/123375
      Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      fa6639d6
    • Ian Lance Taylor's avatar
      runtime: make TestGcSys actually test something · 0a519401
      Ian Lance Taylor authored
      The workthegc function was being inlined, and the slice did not
      escape, so there was no memory allocation. Use a sink variable to
      force memory allocation, at least for now.
      
      Fixes #23343
      
      Change-Id: I02f4618e343c8b6cb552cb4e9f272e112785f7cf
      Reviewed-on: https://go-review.googlesource.com/122576
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      0a519401
    • Thanabodee Charoenpiriyakij's avatar
      runtime: remove +1-1 when asking PC values · 68527ff4
      Thanabodee Charoenpiriyakij authored
      Fixes #26437
      
      Change-Id: Id47b3bcc23ea7b7b17b55dd96b5830c48fd8d53d
      Reviewed-on: https://go-review.googlesource.com/124895Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      68527ff4
    • Lynn Boger's avatar
      runtime: fix implementation of cputicks for ppc64x · cfbe3cfb
      Lynn Boger authored
      The implementation of cputicks has been wrong for ppc64x. The
      previous code sequence is for 32 bit, not 64 bit.
      
      Change-Id: I308ae6cf9131f53a0100cd3f8ae4e16601f2d553
      Reviewed-on: https://go-review.googlesource.com/129595
      Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarCarlos Eduardo Seo <cseo@linux.vnet.ibm.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      cfbe3cfb
    • Roland Illig's avatar
      runtime/pprof: fix resource leak in documentation · f2d7e66e
      Roland Illig authored
      Fixes #26970
      
      Change-Id: I0f2695434a53550cf84f702e9d8d02a37448d396
      Reviewed-on: https://go-review.googlesource.com/129195Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      f2d7e66e
    • Iskander Sharipov's avatar
      runtime: fix Go prototypes in amd64 asm code · 3879ea54
      Iskander Sharipov authored
      Also adds some missing asmdecl comments for funcs with Go proto.
      
      Change-Id: Iabc68e8c0ad936e06ed719e0f030bfc5f6f6e168
      Reviewed-on: https://go-review.googlesource.com/127760
      Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      3879ea54
    • Martin Möhrmann's avatar
      runtime: replace calls to hasprefix with hasPrefix · b0dc5469
      Martin Möhrmann authored
      The hasprefix function is redundant and can be removed since it has
      the same implementation as hasPrefix modulo variable names.
      
      Fixes #25688
      
      Change-Id: I499cc24a2b5c38d1301718a4e66f555fd138386f
      Reviewed-on: https://go-review.googlesource.com/115835
      Run-TryBot: Martin Möhrmann <moehrmann@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIlya Tocar <ilya.tocar@intel.com>
      b0dc5469
    • Zhou Peng's avatar
      runtime: fix typo: there -> the · 2fad8b21
      Zhou Peng authored
      Change-Id: I2ecbd68b1b30ab64e64ae120101761400c22457b
      Reviewed-on: https://go-review.googlesource.com/129757Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      2fad8b21
    • Daniel Martí's avatar
      encoding/base64: slight decoding speed-up · 811b187a
      Daniel Martí authored
      First, use a dummy slice access on decode64 and decode32 to ensure that
      there is a single bounds check for src.
      
      Second, move the PutUint64/PutUint32 calls out of these functions,
      meaning that they are simpler and smaller. This may also open the door
      to inlineability in the future, but for now, they both go past the
      budget.
      
      While at it, get rid of the ilen and olen variables, which have no
      impact whatsoever on performance. At least, not measurable by any of the
      benchmarks.
      
      name                 old time/op    new time/op    delta
      DecodeString/2-4       54.3ns ± 1%    55.2ns ± 2%   +1.60%  (p=0.017 n=5+6)
      DecodeString/4-4       66.6ns ± 1%    66.8ns ± 2%     ~     (p=0.903 n=6+6)
      DecodeString/8-4       79.3ns ± 2%    79.6ns ± 1%     ~     (p=0.448 n=6+6)
      DecodeString/64-4       300ns ± 1%     281ns ± 3%   -6.54%  (p=0.002 n=6+6)
      DecodeString/8192-4    27.4µs ± 1%    23.7µs ± 2%  -13.47%  (p=0.002 n=6+6)
      
      name                 old speed      new speed      delta
      DecodeString/2-4     73.7MB/s ± 1%  72.5MB/s ± 2%   -1.55%  (p=0.026 n=5+6)
      DecodeString/4-4      120MB/s ± 1%   120MB/s ± 2%     ~     (p=0.851 n=6+6)
      DecodeString/8-4      151MB/s ± 2%   151MB/s ± 1%     ~     (p=0.485 n=6+6)
      DecodeString/64-4     292MB/s ± 1%   313MB/s ± 3%   +7.03%  (p=0.002 n=6+6)
      DecodeString/8192-4   399MB/s ± 1%   461MB/s ± 2%  +15.58%  (p=0.002 n=6+6)
      
      For #19636.
      
      Change-Id: I0dfbdafa2a41dc4c582f63aef94b90b8e473731c
      Reviewed-on: https://go-review.googlesource.com/113776Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      811b187a
    • Yury Smolsky's avatar
      test: restore tests for the reject unsafe code option · 1484270a
      Yury Smolsky authored
      Tests in test/safe were neglected after moving to the run.go
      framework. This change restores them.
      
      These tests are skipped for go/types via -+ option.
      
      Fixes #25668
      
      Change-Id: I8fe26574a76fa7afa8664c467d7c2e6334f1bba9
      Reviewed-on: https://go-review.googlesource.com/124660Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      1484270a
    • Jordan Rhee's avatar
      syscall: support windows/arm · 43704759
      Jordan Rhee authored
      Updates #26148
      
      Change-Id: I008502232642237270b7c8a2efb4a378345d06fd
      Reviewed-on: https://go-review.googlesource.com/128716
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      43704759
    • Ian Lance Taylor's avatar
      regexp/syntax: don't do both linear and binary sesarch in MatchRunePos · 33960341
      Ian Lance Taylor authored
      MatchRunePos is a significant element of regexp performance, so some
      attention to optimization is appropriate. Before this CL, a
      non-matching rune would do both a linear search in the first four
      entries, and a binary search over all the entries. Change the code to
      optimize for the common case of two runes, to only do a linear search
      when there are up to four entries, and to only do a binary search when
      there are more than four entries.
      
      Updates #26623
      
      name                             old time/op    new time/op    delta
      Find-12                             260ns ± 1%     275ns ± 7%   +5.84%  (p=0.000 n=8+10)
      FindAllNoMatches-12                 144ns ± 9%     143ns ±12%     ~     (p=0.187 n=10+10)
      FindString-12                       256ns ± 4%     254ns ± 1%     ~     (p=0.357 n=9+8)
      FindSubmatch-12                     587ns ±12%     593ns ±11%     ~     (p=0.516 n=10+10)
      FindStringSubmatch-12               534ns ±12%     525ns ±14%     ~     (p=0.565 n=10+10)
      Literal-12                          104ns ±14%     106ns ±11%     ~     (p=0.145 n=10+10)
      NotLiteral-12                      1.51µs ± 8%    1.47µs ± 2%     ~     (p=0.508 n=10+9)
      MatchClass-12                      2.47µs ± 1%    2.26µs ± 6%   -8.55%  (p=0.000 n=8+10)
      MatchClass_InRange-12              2.18µs ± 5%    2.25µs ±11%   +2.85%  (p=0.009 n=9+10)
      ReplaceAll-12                      2.35µs ± 6%    2.08µs ±23%  -11.59%  (p=0.010 n=9+10)
      AnchoredLiteralShortNonMatch-12    93.2ns ± 9%    93.2ns ±11%     ~     (p=0.716 n=10+10)
      AnchoredLiteralLongNonMatch-12      118ns ±10%     117ns ± 9%     ~     (p=0.802 n=10+10)
      AnchoredShortMatch-12               142ns ± 1%     141ns ± 1%   -0.53%  (p=0.007 n=8+8)
      AnchoredLongMatch-12                303ns ± 9%     304ns ± 6%     ~     (p=0.724 n=10+10)
      OnePassShortA-12                    620ns ± 1%     618ns ± 9%     ~     (p=0.162 n=8+10)
      NotOnePassShortA-12                 599ns ± 8%     568ns ± 1%   -5.21%  (p=0.000 n=10+8)
      OnePassShortB-12                    525ns ± 7%     489ns ± 1%   -6.93%  (p=0.000 n=10+8)
      NotOnePassShortB-12                 449ns ± 9%     431ns ±11%   -4.05%  (p=0.033 n=10+10)
      OnePassLongPrefix-12                119ns ± 6%     114ns ± 0%   -3.88%  (p=0.006 n=10+9)
      OnePassLongNotPrefix-12             420ns ± 9%     410ns ± 7%     ~     (p=0.645 n=10+9)
      MatchParallelShared-12              376ns ± 0%     375ns ± 0%   -0.45%  (p=0.003 n=8+10)
      MatchParallelCopied-12             39.4ns ± 1%    39.1ns ± 0%   -0.55%  (p=0.004 n=10+9)
      QuoteMetaAll-12                     139ns ± 7%     142ns ± 7%     ~     (p=0.445 n=10+10)
      QuoteMetaNone-12                   56.7ns ± 0%    61.3ns ± 7%   +8.03%  (p=0.001 n=8+10)
      Match/Easy0/32-12                  83.4ns ± 7%    83.1ns ± 8%     ~     (p=0.541 n=10+10)
      Match/Easy0/1K-12                   417ns ± 8%     394ns ± 6%     ~     (p=0.059 n=10+9)
      Match/Easy0/32K-12                 7.05µs ± 8%    7.30µs ± 9%     ~     (p=0.190 n=10+10)
      Match/Easy0/1M-12                   291µs ±17%     284µs ±10%     ~     (p=0.481 n=10+10)
      Match/Easy0/32M-12                 9.89ms ± 4%   10.27ms ± 8%     ~     (p=0.315 n=10+10)
      Match/Easy0i/32-12                 1.13µs ± 1%    1.14µs ± 1%   +1.51%  (p=0.000 n=8+8)
      Match/Easy0i/1K-12                 35.7µs ±11%    36.8µs ±10%     ~     (p=0.143 n=10+10)
      Match/Easy0i/32K-12                1.70ms ± 7%    1.72ms ± 7%     ~     (p=0.776 n=9+6)
      
      name                             old alloc/op   new alloc/op   delta
      Find-12                             0.00B          0.00B          ~     (all equal)
      FindAllNoMatches-12                 0.00B          0.00B          ~     (all equal)
      FindString-12                       0.00B          0.00B          ~     (all equal)
      FindSubmatch-12                     48.0B ± 0%     48.0B ± 0%     ~     (all equal)
      FindStringSubmatch-12               32.0B ± 0%     32.0B ± 0%     ~     (all equal)
      
      name                             old allocs/op  new allocs/op  delta
      Find-12                              0.00           0.00          ~     (all equal)
      FindAllNoMatches-12                  0.00           0.00          ~     (all equal)
      FindString-12                        0.00           0.00          ~     (all equal)
      FindSubmatch-12                      1.00 ± 0%      1.00 ± 0%     ~     (all equal)
      FindStringSubmatch-12                1.00 ± 0%      1.00 ± 0%     ~     (all equal)
      
      name                             old speed      new speed      delta
      QuoteMetaAll-12                   101MB/s ± 8%    99MB/s ± 7%     ~     (p=0.529 n=10+10)
      QuoteMetaNone-12                  458MB/s ± 0%   425MB/s ± 8%   -7.22%  (p=0.003 n=8+10)
      Match/Easy0/32-12                 385MB/s ± 7%   386MB/s ± 7%     ~     (p=0.579 n=10+10)
      Match/Easy0/1K-12                2.46GB/s ± 8%  2.60GB/s ± 6%     ~     (p=0.065 n=10+9)
      Match/Easy0/32K-12               4.66GB/s ± 7%  4.50GB/s ±10%     ~     (p=0.190 n=10+10)
      Match/Easy0/1M-12                3.63GB/s ±15%  3.70GB/s ± 9%     ~     (p=0.481 n=10+10)
      Match/Easy0/32M-12               3.40GB/s ± 4%  3.28GB/s ± 8%     ~     (p=0.315 n=10+10)
      Match/Easy0i/32-12               28.4MB/s ± 1%  28.0MB/s ± 1%   -1.50%  (p=0.000 n=8+8)
      Match/Easy0i/1K-12               28.8MB/s ±10%  27.9MB/s ±11%     ~     (p=0.143 n=10+10)
      Match/Easy0i/32K-12              19.0MB/s ±14%  19.1MB/s ± 8%     ~     (p=1.000 n=10+6)
      
      Change-Id: I238a451b36ad84b0f5534ff0af5c077a0d52d73a
      Reviewed-on: https://go-review.googlesource.com/130417Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      33960341
    • andrius4669's avatar
      bufio: avoid rescanning buffer multiple times in ReadSlice · a21ae28f
      andrius4669 authored
      When existing data in buffer does not have delimiter,
      and new data is added with b.fill(), continue search from
      previous point instead of starting from beginning.
      
      Change-Id: Id78332afe2b0281b4a3c86bd1ffe9449cfea7848
      GitHub-Last-Rev: 08e7d2f50151a00b22800e3f7020d0de8dee7dcf
      GitHub-Pull-Request: golang/go#25441
      Reviewed-on: https://go-review.googlesource.com/113535
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      a21ae28f
    • Tim Cooper's avatar
      strconv: use bytealg implementation of IndexByteString · 5ddecd15
      Tim Cooper authored
          benchmark                  old ns/op     new ns/op     delta
          BenchmarkUnquoteEasy-4     188           79.5          -57.71%
          BenchmarkUnquoteHard-4     653           622           -4.75%
      
      Fixes #23821
      
      Change-Id: I1ebfab1b7f0248fd313de21396e0f8612076aa6d
      Reviewed-on: https://go-review.googlesource.com/116755Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      5ddecd15
    • Iskander Sharipov's avatar
      cmd/compile/internal/gc: remove commented-out code from esc.go · 0c706fdd
      Iskander Sharipov authored
      Also adjust some comments to where they belong.
      
      Change-Id: Ifbb38052401b0d33d7bb9800f56a20ce8f39c25f
      Reviewed-on: https://go-review.googlesource.com/127761
      Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      0c706fdd
    • Shivansh Rai's avatar
      cmd/gofmt: update error handling when writing to backup file · d778a371
      Shivansh Rai authored
      As per commit aa0ae755, handling of io.ErrShortWrite is done in
      *File.Write() itself.
      
      Change-Id: I92924b51e8df2ae88e6e50318348f44973addba8
      Reviewed-on: https://go-review.googlesource.com/113696Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      d778a371
    • Shivansh Rai's avatar
      all: use consistent shebang line across all shell scripts · c92354f4
      Shivansh Rai authored
      Change-Id: I4aac882b1b618a388d0748a427dc998203d3a1b2
      Reviewed-on: https://go-review.googlesource.com/113856Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      c92354f4
    • go101's avatar
      strings: use Builder in Repeat to avoid an allocation · 7a178df0
      go101 authored
      name           old time/op    new time/op    delta
      Repeat/5x1-4     95.9ns ± 2%    70.1ns ± 2%  -26.93%  (p=0.000 n=9+10)
      Repeat/5x2-4      146ns ± 3%     100ns ± 2%  -31.99%  (p=0.000 n=10+10)
      Repeat/5x6-4      203ns ± 3%     140ns ± 4%  -30.77%  (p=0.000 n=10+10)
      Repeat/10x1-4     139ns ± 3%      92ns ± 4%  -34.08%  (p=0.000 n=10+10)
      Repeat/10x2-4     188ns ± 4%     122ns ± 2%  -35.34%  (p=0.000 n=10+10)
      Repeat/10x6-4     264ns ± 5%     179ns ± 4%  -32.15%  (p=0.000 n=10+10)
      
      name           old alloc/op   new alloc/op   delta
      Repeat/5x1-4      10.0B ± 0%      5.0B ± 0%  -50.00%  (p=0.000 n=10+10)
      Repeat/5x2-4      32.0B ± 0%     16.0B ± 0%  -50.00%  (p=0.000 n=10+10)
      Repeat/5x6-4      64.0B ± 0%     32.0B ± 0%  -50.00%  (p=0.000 n=10+10)
      Repeat/10x1-4     32.0B ± 0%     16.0B ± 0%  -50.00%  (p=0.000 n=10+10)
      Repeat/10x2-4     64.0B ± 0%     32.0B ± 0%  -50.00%  (p=0.000 n=10+10)
      Repeat/10x6-4      128B ± 0%       64B ± 0%  -50.00%  (p=0.000 n=10+10)
      
      Change-Id: I6619336da636df39c560f6cc481519f48c6e8176
      GitHub-Last-Rev: 4b2c73f3bfa0b3789268b9ea6e1ecdb984e8087c
      GitHub-Pull-Request: golang/go#25894
      Reviewed-on: https://go-review.googlesource.com/118855
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      7a178df0
    • Iskander Sharipov's avatar
      cmd/link/internal/amd64: remove /*fallthrough*/ comments · 6a11e1e8
      Iskander Sharipov authored
      These are artifacts originating from C->Go translation.
      
      Change-Id: Ib5cdcaf42f43f3968482892fb4945e19ef38bd6d
      Reviewed-on: https://go-review.googlesource.com/121795Reviewed-by: 's avatarDave Cheney <dave@cheney.net>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      6a11e1e8
    • Diego Siqueira's avatar
      plugin: remove unused func · bca00def
      Diego Siqueira authored
      Change-Id: Ife29464d581f00940af7ef9251bf99661c1350b6
      GitHub-Last-Rev: d7747706584b06b619fc78a85b6b9bfe619467c8
      GitHub-Pull-Request: golang/go#26740
      Reviewed-on: https://go-review.googlesource.com/127195Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      bca00def
    • Yury Smolsky's avatar
      test: remove errchk, the perl script · 02fecd33
      Yury Smolsky authored
      gc tests do not depend on errchk.
      
      Fixes #25669
      
      Change-Id: I99eb87bb9677897b9167d4fc9a6321fa66cd9116
      Reviewed-on: https://go-review.googlesource.com/115955Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      02fecd33
    • Iskander Sharipov's avatar
      cmd/internal/obj/arm64: simplify some bool expressions · ed2f84a9
      Iskander Sharipov authored
      Replace `!(o1 != 0)` with `o1 == 0` (for readability).
      
      Found using https://go-critic.github.io/overview.html#boolExprSimplify-ref
      
      Change-Id: I4fc035458f530973f9be15b38441ec7b5fb591ec
      Reviewed-on: https://go-review.googlesource.com/123377
      Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      ed2f84a9
    • Daniel Martí's avatar
      encoding/json: simplify some pieces of the encoder · 9d1540b7
      Daniel Martí authored
      Some WriteByte('\\') calls can be deduplicated.
      
      fillField is used in two occasions, but it is unnecessary when adding
      fields to the "next" stack, as those aren't used for the final encoding.
      Inline the func with its only remaining call.
      
      Finally, unindent a default-if block.
      
      The performance of the encoder is unaffected:
      
      name           old time/op    new time/op    delta
      CodeEncoder-4    6.65ms ± 1%    6.65ms ± 0%   ~     (p=0.662 n=6+5)
      
      Change-Id: Ie55baeab89abad9b9f13e9f6ca886a670c30dba9
      Reviewed-on: https://go-review.googlesource.com/122461
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      9d1540b7
    • Johan Brandhorst's avatar
      strings, bytes: avoid unnecessary function literals · 841a9136
      Johan Brandhorst authored
      A number of explicit function literals found through the
      unlambda linter are removed.
      
      Fixes #26802
      
      Change-Id: I0b122bdd95e9cb804c77efe20483fdf681c8154e
      Reviewed-on: https://go-review.googlesource.com/127756Reviewed-by: 's avatarJoe Tsai <thebrokentoaster@gmail.com>
      841a9136
    • Cholerae Hu's avatar
      net/mail: lazily initialize dateLayouts · 39eda0da
      Cholerae Hu authored
      Saves 6KB of memory in stdlib packages.
      
      Updates #26775
      
      Change-Id: I1a6184cefa78e9a3c034fa84506fdfe0fec27add
      Reviewed-on: https://go-review.googlesource.com/127736Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      39eda0da
    • Daniel Martí's avatar
      encoding/json: inline fieldByIndex · 75e7e05a
      Daniel Martí authored
      This function was only used in a single place - in the field encoding
      loop within the struct encoder.
      
      Inlining the function call manually lets us get rid of the call
      overhead. But most importantly, it lets us simplify the logic afterward.
      We no longer need to use reflect.Value{} and !fv.IsValid(), as we can
      skip the field immediately.
      
      The two factors combined (mostly just the latter) give a moderate speed
      improvement to this hot loop.
      
      name           old time/op    new time/op    delta
      CodeEncoder-4    6.01ms ± 1%    5.91ms ± 1%  -1.66%  (p=0.002 n=6+6)
      
      name           old speed      new speed      delta
      CodeEncoder-4   323MB/s ± 1%   328MB/s ± 1%  +1.69%  (p=0.002 n=6+6)
      
      Updates #5683.
      
      Change-Id: I12757c325a68abb2856026cf719c122612a1f38e
      Reviewed-on: https://go-review.googlesource.com/125417
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      75e7e05a
    • Daniel Martí's avatar
      encoding/json: simplify the structEncoder type · 81487266
      Daniel Martí authored
      structEncoder had two slices - the list of fields, and a list containing
      the encoder for each field. structEncoder.encode then looped over the
      fields, and indexed into the second slice to grab the field encoder.
      
      However, this makes it very hard for the compiler to be able to prove
      that the two slices always have the same length, and that the index
      expression doesn't need a bounds check.
      
      Merge the two slices into one to completely remove the need for bounds
      checks in the hot loop.
      
      While at it, don't copy the field elements when ranging, which greatly
      speeds up the hot loop in structEncoder.
      
      name           old time/op    new time/op    delta
      CodeEncoder-4    6.18ms ± 0%    5.56ms ± 0%  -10.08%  (p=0.002 n=6+6)
      
      name           old speed      new speed      delta
      CodeEncoder-4   314MB/s ± 0%   349MB/s ± 0%  +11.21%  (p=0.002 n=6+6)
      
      name           old alloc/op   new alloc/op   delta
      CodeEncoder-4    93.2kB ± 0%    62.1kB ± 0%  -33.33%  (p=0.002 n=6+6)
      
      Updates #5683.
      
      Change-Id: I0dd47783530f439b125e084aede09dda172eb1e8
      Reviewed-on: https://go-review.googlesource.com/125416
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      81487266
    • Tobias Klauser's avatar
      cmd/cover: fix off-by-one error in TestCoverHTML · f4e4ec2c
      Tobias Klauser authored
      Avoid index out of range if len(goldenLines) == len(outLines) + 1
      
      Change-Id: Ic23a85d2b8dd06a615e35a58331e78abe4ad6703
      Reviewed-on: https://go-review.googlesource.com/130396
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      f4e4ec2c
    • Ben Shi's avatar
      cmd/compile: implement "OPC $imm, (mem)" for 386 · a0a7e9fc
      Ben Shi authored
      New read-modify-write operations are introduced in this CL for 386.
      
      1. The total size of pkg/linux_386 decreases about 10KB (excluding
      cmd/compile).
      
      2. The go1 benchmark shows little regression.
      name                     old time/op    new time/op    delta
      BinaryTree17-4              3.32s ± 4%     3.29s ± 2%    ~     (p=0.059 n=30+30)
      Fannkuch11-4                3.49s ± 1%     3.46s ± 1%  -0.92%  (p=0.001 n=30+30)
      FmtFprintfEmpty-4          47.7ns ± 2%    46.8ns ± 5%  -1.93%  (p=0.011 n=25+30)
      FmtFprintfString-4         79.5ns ± 7%    80.2ns ± 3%  +0.89%  (p=0.001 n=28+29)
      FmtFprintfInt-4            90.5ns ± 2%    92.1ns ± 2%  +1.82%  (p=0.014 n=22+30)
      FmtFprintfIntInt-4          141ns ± 1%     144ns ± 3%  +2.23%  (p=0.013 n=22+30)
      FmtFprintfPrefixedInt-4     183ns ± 2%     184ns ± 3%    ~     (p=0.080 n=21+30)
      FmtFprintfFloat-4           409ns ± 3%     412ns ± 3%  +0.83%  (p=0.040 n=30+30)
      FmtManyArgs-4               597ns ± 6%     607ns ± 4%  +1.71%  (p=0.006 n=30+30)
      GobDecode-4                7.21ms ± 5%    7.18ms ± 6%    ~     (p=0.665 n=30+30)
      GobEncode-4                7.17ms ± 6%    7.09ms ± 7%    ~     (p=0.117 n=29+30)
      Gzip-4                      413ms ± 4%     399ms ± 4%  -3.48%  (p=0.000 n=30+30)
      Gunzip-4                   41.3ms ± 4%    41.7ms ± 3%  +1.05%  (p=0.011 n=30+30)
      HTTPClientServer-4         63.5µs ± 3%    62.9µs ± 2%  -0.97%  (p=0.017 n=30+27)
      JSONEncode-4               20.3ms ± 5%    20.1ms ± 5%  -1.16%  (p=0.004 n=30+30)
      JSONDecode-4               66.2ms ± 4%    67.7ms ± 4%  +2.21%  (p=0.000 n=30+30)
      Mandelbrot200-4            5.16ms ± 3%    5.18ms ± 3%    ~     (p=0.123 n=30+30)
      GoParse-4                  3.23ms ± 2%    3.27ms ± 2%  +1.08%  (p=0.006 n=30+30)
      RegexpMatchEasy0_32-4      98.9ns ± 5%    97.1ns ± 4%  -1.83%  (p=0.006 n=30+30)
      RegexpMatchEasy0_1K-4       842ns ± 3%     842ns ± 3%    ~     (p=0.550 n=30+30)
      RegexpMatchEasy1_32-4       107ns ± 4%     105ns ± 4%  -1.93%  (p=0.012 n=30+30)
      RegexpMatchEasy1_1K-4      1.03µs ± 4%    1.04µs ± 4%    ~     (p=0.304 n=30+30)
      RegexpMatchMedium_32-4      132ns ± 2%     129ns ± 4%  -2.02%  (p=0.000 n=21+30)
      RegexpMatchMedium_1K-4     44.1µs ± 4%    43.8µs ± 3%    ~     (p=0.641 n=30+30)
      RegexpMatchHard_32-4       2.26µs ± 4%    2.23µs ± 4%  -1.28%  (p=0.023 n=30+30)
      RegexpMatchHard_1K-4       68.1µs ± 3%    68.6µs ± 4%    ~     (p=0.089 n=30+30)
      Revcomp-4                   1.85s ± 2%     1.84s ± 2%    ~     (p=0.072 n=30+30)
      Template-4                 69.2ms ± 3%    68.5ms ± 3%  -1.04%  (p=0.012 n=30+30)
      TimeParse-4                 441ns ± 3%     446ns ± 4%  +1.21%  (p=0.001 n=30+30)
      TimeFormat-4                415ns ± 3%     415ns ± 3%    ~     (p=0.436 n=30+30)
      [Geo mean]                 67.0µs         66.9µs       -0.17%
      
      name                     old speed      new speed      delta
      GobDecode-4               107MB/s ± 5%   107MB/s ± 6%    ~     (p=0.663 n=30+30)
      GobEncode-4               107MB/s ± 6%   108MB/s ± 7%    ~     (p=0.117 n=29+30)
      Gzip-4                   47.0MB/s ± 4%  48.7MB/s ± 4%  +3.61%  (p=0.000 n=30+30)
      Gunzip-4                  470MB/s ± 4%   466MB/s ± 4%  -1.05%  (p=0.011 n=30+30)
      JSONEncode-4             95.6MB/s ± 5%  96.7MB/s ± 5%  +1.16%  (p=0.005 n=30+30)
      JSONDecode-4             29.3MB/s ± 4%  28.7MB/s ± 4%  -2.17%  (p=0.000 n=30+30)
      GoParse-4                17.9MB/s ± 2%  17.7MB/s ± 2%  -1.06%  (p=0.007 n=30+30)
      RegexpMatchEasy0_32-4     323MB/s ± 5%   329MB/s ± 4%  +1.93%  (p=0.006 n=30+30)
      RegexpMatchEasy0_1K-4    1.22GB/s ± 3%  1.22GB/s ± 3%    ~     (p=0.496 n=30+30)
      RegexpMatchEasy1_32-4     298MB/s ± 4%   303MB/s ± 4%  +1.84%  (p=0.017 n=30+30)
      RegexpMatchEasy1_1K-4     995MB/s ± 4%   989MB/s ± 4%    ~     (p=0.307 n=30+30)
      RegexpMatchMedium_32-4   7.56MB/s ± 4%  7.74MB/s ± 4%  +2.46%  (p=0.000 n=22+30)
      RegexpMatchMedium_1K-4   23.2MB/s ± 4%  23.4MB/s ± 3%    ~     (p=0.651 n=30+30)
      RegexpMatchHard_32-4     14.2MB/s ± 4%  14.3MB/s ± 4%  +1.29%  (p=0.021 n=30+30)
      RegexpMatchHard_1K-4     15.0MB/s ± 3%  14.9MB/s ± 4%    ~     (p=0.069 n=30+29)
      Revcomp-4                 138MB/s ± 2%   138MB/s ± 2%    ~     (p=0.072 n=30+30)
      Template-4               28.1MB/s ± 3%  28.4MB/s ± 3%  +1.05%  (p=0.012 n=30+30)
      [Geo mean]               79.7MB/s       80.2MB/s       +0.60%
      
      Change-Id: I44a1dfc942c9a385904553c4fe1fa8e509c8aa31
      Reviewed-on: https://go-review.googlesource.com/120916
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      a0a7e9fc
    • Filippo Valsorda's avatar
      crypto/tls: make ConnectionState.ExportKeyingMaterial a method · de16b322
      Filippo Valsorda authored
      The unexported field is hidden from reflect based marshalers, which
      would break otherwise. Also, make it return an error, as there are
      multiple reasons it might fail.
      
      Fixes #27125
      
      Change-Id: I92adade2fe456103d2d5c0315629ca0256953764
      Reviewed-on: https://go-review.googlesource.com/130535
      Run-TryBot: Filippo Valsorda <filippo@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      de16b322
    • Ben Shi's avatar
      cmd/compile: optimize 386 code with MULLload/DIVSSload/DIVSDload · 90f2fa00
      Ben Shi authored
      IMULL/DIVSS/DIVSD all can take the source operand from memory
      directly. And this CL implement that optimization.
      
      1. The total size of pkg/linux_386 decreases about 84KB (excluding
      cmd/compile).
      
      2. The go1 benchmark shows little regression in total (excluding noise).
      name                     old time/op    new time/op    delta
      BinaryTree17-4              3.29s ± 2%     3.27s ± 4%    ~     (p=0.192 n=30+30)
      Fannkuch11-4                3.49s ± 2%     3.54s ± 1%  +1.48%  (p=0.000 n=30+30)
      FmtFprintfEmpty-4          45.9ns ± 3%    46.3ns ± 4%  +0.89%  (p=0.037 n=30+30)
      FmtFprintfString-4         78.8ns ± 3%    78.7ns ± 4%    ~     (p=0.209 n=30+27)
      FmtFprintfInt-4            91.0ns ± 2%    90.3ns ± 2%  -0.82%  (p=0.031 n=30+27)
      FmtFprintfIntInt-4          142ns ± 4%     143ns ± 4%    ~     (p=0.136 n=30+30)
      FmtFprintfPrefixedInt-4     181ns ± 3%     183ns ± 4%  +1.40%  (p=0.005 n=30+30)
      FmtFprintfFloat-4           404ns ± 4%     408ns ± 3%    ~     (p=0.397 n=30+30)
      FmtManyArgs-4               601ns ± 3%     609ns ± 5%    ~     (p=0.059 n=30+30)
      GobDecode-4                7.21ms ± 5%    7.24ms ± 5%    ~     (p=0.612 n=30+30)
      GobEncode-4                6.91ms ± 6%    6.91ms ± 6%    ~     (p=0.797 n=30+30)
      Gzip-4                      398ms ± 6%     399ms ± 4%    ~     (p=0.173 n=30+30)
      Gunzip-4                   41.7ms ± 3%    41.8ms ± 3%    ~     (p=0.423 n=30+30)
      HTTPClientServer-4         62.3µs ± 2%    62.7µs ± 3%    ~     (p=0.085 n=29+30)
      JSONEncode-4               21.0ms ± 4%    20.7ms ± 5%  -1.39%  (p=0.014 n=30+30)
      JSONDecode-4               66.3ms ± 3%    67.4ms ± 1%  +1.71%  (p=0.003 n=30+24)
      Mandelbrot200-4            5.15ms ± 3%    5.16ms ± 3%    ~     (p=0.697 n=30+30)
      GoParse-4                  3.24ms ± 3%    3.27ms ± 4%  +0.91%  (p=0.032 n=30+30)
      RegexpMatchEasy0_32-4       101ns ± 5%      99ns ± 4%  -1.82%  (p=0.008 n=29+30)
      RegexpMatchEasy0_1K-4       848ns ± 4%     841ns ± 2%  -0.77%  (p=0.043 n=30+30)
      RegexpMatchEasy1_32-4       106ns ± 6%     106ns ± 3%    ~     (p=0.939 n=29+30)
      RegexpMatchEasy1_1K-4      1.02µs ± 3%    1.03µs ± 4%    ~     (p=0.297 n=28+30)
      RegexpMatchMedium_32-4      129ns ± 4%     127ns ± 4%    ~     (p=0.073 n=30+30)
      RegexpMatchMedium_1K-4     43.9µs ± 3%    43.8µs ± 3%    ~     (p=0.186 n=30+30)
      RegexpMatchHard_32-4       2.24µs ± 4%    2.22µs ± 4%    ~     (p=0.332 n=30+29)
      RegexpMatchHard_1K-4       68.0µs ± 4%    67.5µs ± 3%    ~     (p=0.290 n=30+30)
      Revcomp-4                   1.85s ± 3%     1.85s ± 3%    ~     (p=0.358 n=30+30)
      Template-4                 69.6ms ± 3%    70.0ms ± 4%    ~     (p=0.273 n=30+30)
      TimeParse-4                 445ns ± 3%     441ns ± 3%    ~     (p=0.494 n=30+30)
      TimeFormat-4                412ns ± 3%     412ns ± 6%    ~     (p=0.841 n=30+30)
      [Geo mean]                 66.7µs         66.8µs       +0.13%
      
      name                     old speed      new speed      delta
      GobDecode-4               107MB/s ± 5%   106MB/s ± 5%    ~     (p=0.615 n=30+30)
      GobEncode-4               111MB/s ± 6%   111MB/s ± 6%    ~     (p=0.790 n=30+30)
      Gzip-4                   48.8MB/s ± 6%  48.7MB/s ± 4%    ~     (p=0.167 n=30+30)
      Gunzip-4                  465MB/s ± 3%   465MB/s ± 3%    ~     (p=0.420 n=30+30)
      JSONEncode-4             92.4MB/s ± 4%  93.7MB/s ± 5%  +1.42%  (p=0.015 n=30+30)
      JSONDecode-4             29.3MB/s ± 3%  28.8MB/s ± 1%  -1.72%  (p=0.003 n=30+24)
      GoParse-4                17.9MB/s ± 3%  17.7MB/s ± 4%  -0.89%  (p=0.037 n=30+30)
      RegexpMatchEasy0_32-4     317MB/s ± 8%   324MB/s ± 4%  +2.14%  (p=0.006 n=30+30)
      RegexpMatchEasy0_1K-4    1.21GB/s ± 4%  1.22GB/s ± 2%  +0.77%  (p=0.036 n=30+30)
      RegexpMatchEasy1_32-4     298MB/s ± 7%   299MB/s ± 4%    ~     (p=0.511 n=30+30)
      RegexpMatchEasy1_1K-4    1.00GB/s ± 3%  1.00GB/s ± 4%    ~     (p=0.304 n=28+30)
      RegexpMatchMedium_32-4   7.75MB/s ± 4%  7.82MB/s ± 4%    ~     (p=0.089 n=30+30)
      RegexpMatchMedium_1K-4   23.3MB/s ± 3%  23.4MB/s ± 3%    ~     (p=0.181 n=30+30)
      RegexpMatchHard_32-4     14.3MB/s ± 4%  14.4MB/s ± 4%    ~     (p=0.320 n=30+29)
      RegexpMatchHard_1K-4     15.1MB/s ± 4%  15.2MB/s ± 3%    ~     (p=0.273 n=30+30)
      Revcomp-4                 137MB/s ± 3%   137MB/s ± 3%    ~     (p=0.352 n=30+30)
      Template-4               27.9MB/s ± 3%  27.7MB/s ± 4%    ~     (p=0.277 n=30+30)
      [Geo mean]               79.9MB/s       80.1MB/s       +0.15%
      
      Change-Id: I97333cd8ddabb3c7c88ca5aa9e14a005b74d306d
      Reviewed-on: https://go-review.googlesource.com/120695
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      90f2fa00
    • Ben Shi's avatar
      cmd/compile: optimize AMD64 with DIVSSload and DIVSDload · 705f3c74
      Ben Shi authored
      DIVSSload & DIVSDload directly operate on a memory operand. And
      binary size can be reduced by them, while the performance is
      not affected.
      
      The total size of pkg/linux_amd64 (excluding cmd/compile) decreases
      about 6KB.
      
      There is little regression in the go1 benchmark test (excluding noise).
      name                     old time/op    new time/op    delta
      BinaryTree17-4              2.63s ± 4%     2.62s ± 4%    ~     (p=0.809 n=30+30)
      Fannkuch11-4                2.40s ± 2%     2.40s ± 2%    ~     (p=0.109 n=30+30)
      FmtFprintfEmpty-4          43.1ns ± 4%    43.2ns ± 9%    ~     (p=0.168 n=30+30)
      FmtFprintfString-4         73.6ns ± 4%    74.1ns ± 4%    ~     (p=0.069 n=30+30)
      FmtFprintfInt-4            81.0ns ± 3%    81.4ns ± 5%    ~     (p=0.350 n=30+30)
      FmtFprintfIntInt-4          127ns ± 4%     129ns ± 4%  +0.99%  (p=0.021 n=30+30)
      FmtFprintfPrefixedInt-4     156ns ± 4%     155ns ± 4%    ~     (p=0.415 n=30+30)
      FmtFprintfFloat-4           219ns ± 4%     218ns ± 4%    ~     (p=0.071 n=30+30)
      FmtManyArgs-4               522ns ± 3%     518ns ± 3%  -0.68%  (p=0.034 n=30+30)
      GobDecode-4                6.49ms ± 6%    6.52ms ± 6%    ~     (p=0.832 n=30+30)
      GobEncode-4                6.10ms ± 9%    6.14ms ± 7%    ~     (p=0.485 n=30+30)
      Gzip-4                      227ms ± 1%     224ms ± 4%    ~     (p=0.484 n=24+30)
      Gunzip-4                   37.2ms ± 3%    36.8ms ± 4%    ~     (p=0.889 n=30+30)
      HTTPClientServer-4         58.9µs ± 1%    58.7µs ± 2%  -0.42%  (p=0.003 n=28+28)
      JSONEncode-4               12.0ms ± 3%    12.0ms ± 4%    ~     (p=0.523 n=30+30)
      JSONDecode-4               54.6ms ± 4%    54.5ms ± 4%    ~     (p=0.708 n=30+30)
      Mandelbrot200-4            3.78ms ± 4%    3.81ms ± 3%  +0.99%  (p=0.016 n=30+30)
      GoParse-4                  3.20ms ± 4%    3.20ms ± 5%    ~     (p=0.994 n=30+30)
      RegexpMatchEasy0_32-4      77.0ns ± 4%    75.9ns ± 3%  -1.39%  (p=0.006 n=29+30)
      RegexpMatchEasy0_1K-4       255ns ± 4%     253ns ± 4%    ~     (p=0.091 n=30+30)
      RegexpMatchEasy1_32-4      69.7ns ± 3%    70.3ns ± 4%    ~     (p=0.120 n=30+30)
      RegexpMatchEasy1_1K-4       373ns ± 2%     378ns ± 3%  +1.43%  (p=0.000 n=21+26)
      RegexpMatchMedium_32-4      107ns ± 2%     108ns ± 4%  +1.50%  (p=0.012 n=22+30)
      RegexpMatchMedium_1K-4     34.0µs ± 1%    34.3µs ± 3%  +1.08%  (p=0.008 n=24+30)
      RegexpMatchHard_32-4       1.53µs ± 3%    1.54µs ± 3%    ~     (p=0.234 n=30+30)
      RegexpMatchHard_1K-4       46.7µs ± 4%    47.0µs ± 4%    ~     (p=0.420 n=30+30)
      Revcomp-4                   411ms ± 7%     415ms ± 6%    ~     (p=0.059 n=30+30)
      Template-4                 65.5ms ± 5%    66.9ms ± 4%  +2.21%  (p=0.001 n=30+30)
      TimeParse-4                 317ns ± 3%     311ns ± 3%  -1.97%  (p=0.000 n=30+30)
      TimeFormat-4                293ns ± 3%     294ns ± 3%    ~     (p=0.243 n=30+30)
      [Geo mean]                 47.4µs         47.5µs       +0.17%
      
      name                     old speed      new speed      delta
      GobDecode-4               118MB/s ± 5%   118MB/s ± 6%    ~     (p=0.832 n=30+30)
      GobEncode-4               125MB/s ± 7%   125MB/s ± 7%    ~     (p=0.625 n=29+30)
      Gzip-4                   85.3MB/s ± 1%  86.6MB/s ± 4%    ~     (p=0.486 n=24+30)
      Gunzip-4                  522MB/s ± 3%   527MB/s ± 4%    ~     (p=0.889 n=30+30)
      JSONEncode-4              162MB/s ± 3%   162MB/s ± 4%    ~     (p=0.520 n=30+30)
      JSONDecode-4             35.5MB/s ± 4%  35.6MB/s ± 4%    ~     (p=0.701 n=30+30)
      GoParse-4                18.1MB/s ± 4%  18.1MB/s ± 4%    ~     (p=0.891 n=29+30)
      RegexpMatchEasy0_32-4     416MB/s ± 4%   422MB/s ± 3%  +1.43%  (p=0.005 n=29+30)
      RegexpMatchEasy0_1K-4    4.01GB/s ± 4%  4.04GB/s ± 4%    ~     (p=0.091 n=30+30)
      RegexpMatchEasy1_32-4     460MB/s ± 3%   456MB/s ± 5%    ~     (p=0.123 n=30+30)
      RegexpMatchEasy1_1K-4    2.74GB/s ± 2%  2.70GB/s ± 3%  -1.33%  (p=0.000 n=22+26)
      RegexpMatchMedium_32-4   9.39MB/s ± 3%  9.19MB/s ± 4%  -2.06%  (p=0.001 n=28+30)
      RegexpMatchMedium_1K-4   30.1MB/s ± 1%  29.8MB/s ± 3%  -1.04%  (p=0.008 n=24+30)
      RegexpMatchHard_32-4     20.9MB/s ± 3%  20.8MB/s ± 3%    ~     (p=0.234 n=30+30)
      RegexpMatchHard_1K-4     21.9MB/s ± 4%  21.8MB/s ± 4%    ~     (p=0.420 n=30+30)
      Revcomp-4                 619MB/s ± 7%   612MB/s ± 7%    ~     (p=0.059 n=30+30)
      Template-4               29.6MB/s ± 4%  29.0MB/s ± 4%  -2.16%  (p=0.002 n=30+30)
      [Geo mean]                123MB/s        123MB/s       -0.33%
      
      Change-Id: Ia59e077feae4f2824df79059daea4d0f678e3e4c
      Reviewed-on: https://go-review.googlesource.com/120275
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIlya Tocar <ilya.tocar@intel.com>
      705f3c74
    • David Carlier's avatar
      crypto/rand: use the new getrandom syscall on FreeBSD · 64f3d75b
      David Carlier authored
      Since the 12.x branch, the getrandom syscall had been introduced
      with similar interface as Linux's and consistent syscall id
      across architectures.
      
      Change-Id: I63d6b45dbe9e29f07f1b5b6c2ec8be4fa624b9ee
      GitHub-Last-Rev: 6fb76e6522ef5ccb96d02445ffa39796dae89016
      GitHub-Pull-Request: golang/go#25976
      Reviewed-on: https://go-review.googlesource.com/120055
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      64f3d75b
    • Michael Fraenkel's avatar
      strings: use Builder in Map · 45c7d808
      Michael Fraenkel authored
      Use a builder to avoid the copy when converting the []byte to a string.
      
      name                  old time/op    new time/op    delta
      ByteByteMap-8            796ns ± 5%     700ns ± 1%  -12.00%  (p=0.000 n=9+8)
      Map/identity/ASCII-8     123ns ± 8%     126ns ± 7%     ~     (p=0.194 n=10+10)
      Map/identity/Greek-8     198ns ± 2%     204ns ± 5%   +2.99%  (p=0.008 n=9+10)
      Map/change/ASCII-8       266ns ±10%     202ns ± 3%  -24.19%  (p=0.000 n=10+10)
      Map/change/Greek-8       450ns ± 4%     406ns ± 1%   -9.73%  (p=0.000 n=9+10)
      MapNoChanges-8          85.4ns ± 3%    90.2ns ±11%   +5.67%  (p=0.000 n=9+10)
      
      name                  old alloc/op   new alloc/op   delta
      ByteByteMap-8             416B ± 0%      208B ± 0%  -50.00%  (p=0.000 n=10+10)
      Map/identity/ASCII-8     0.00B          0.00B          ~     (all equal)
      Map/identity/Greek-8     0.00B          0.00B          ~     (all equal)
      Map/change/ASCII-8        128B ± 0%       64B ± 0%  -50.00%  (p=0.000 n=10+10)
      Map/change/Greek-8        160B ± 0%       80B ± 0%  -50.00%  (p=0.000 n=10+10)
      MapNoChanges-8           0.00B          0.00B          ~     (all equal)
      
      name                  old allocs/op  new allocs/op  delta
      ByteByteMap-8             2.00 ± 0%      1.00 ± 0%  -50.00%  (p=0.000 n=10+10)
      Map/identity/ASCII-8      0.00           0.00          ~     (all equal)
      Map/identity/Greek-8      0.00           0.00          ~     (all equal)
      Map/change/ASCII-8        2.00 ± 0%      1.00 ± 0%  -50.00%  (p=0.000 n=10+10)
      Map/change/Greek-8        2.00 ± 0%      1.00 ± 0%  -50.00%  (p=0.000 n=10+10)
      MapNoChanges-8            0.00           0.00          ~     (all equal)
      
      Fixes #26304
      
      Change-Id: Ideec9dfc29b0b8107f34fc634247081d0031777d
      Reviewed-on: https://go-review.googlesource.com/122875Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      45c7d808