1. 31 Oct, 2018 9 commits
  2. 30 Oct, 2018 23 commits
    • Keith Randall's avatar
      cmd/compile: implement some moves using non-overlapping reads&writes · 0ad332d8
      Keith Randall authored
      For moves >8,<16 bytes, do a move using non-overlapping loads/stores
      if it would require no more instructions.
      
      This helps a bit with the case when the move is from a static
      constant, because then the code to materialize the value being moved
      is smaller.
      
      Change-Id: Ie47a5a7c654afeb4973142b0a9922faea13c9b54
      Reviewed-on: https://go-review.googlesource.com/c/146019
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      0ad332d8
    • Keith Randall's avatar
      strings: declare IndexByte as noescape · 56b7c61c
      Keith Randall authored
      This lets []byte->string conversions which are used as arguments to
      strings.IndexByte and friends have their backing store allocated on
      the stack.
      
      It only prevents allocation when the string is small enough (32
      bytes), so it isn't perfect. But reusing the []byte backing store
      directly requires a bunch more compiler analysis (see #2205 and
      related issues).
      
      Fixes #25864.
      
      Change-Id: Ie52430422196e3c91e5529d6e56a8435ced1fc4c
      Reviewed-on: https://go-review.googlesource.com/c/146018Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      56b7c61c
    • Keith Randall's avatar
      cmd/compile: when comparing 0-size types, make sure expr side-effects survive · f14067f3
      Keith Randall authored
      Fixes #23837
      
      Change-Id: I53f524d87946a0065f28a4ddbe47b40f2b43c459
      Reviewed-on: https://go-review.googlesource.com/c/145757
      Run-TryBot: Keith Randall <khr@golang.org>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      f14067f3
    • templexxx's avatar
      crypto/cipher: use SIMD for xor on amd64 · 5168fcf6
      templexxx authored
      cpu: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
      
      Benchmark: xor
      
      name                   old time/op    new time/op     delta
      XORBytes/8Bytes-8        8.21ns ± 1%     6.35ns ± 3%   -22.66%  (p=0.008 n=5+5)
      XORBytes/128Bytes-8      17.9ns ± 1%     10.4ns ± 1%   -41.68%  (p=0.008 n=5+5)
      XORBytes/2048Bytes-8      187ns ± 1%       78ns ± 0%   -58.44%  (p=0.008 n=5+5)
      XORBytes/32768Bytes-8    2.87µs ± 1%     1.38µs ± 0%   -52.05%  (p=0.008 n=5+5)
      
      name                   old speed      new speed       delta
      XORBytes/8Bytes-8       974MB/s ± 1%   1260MB/s ± 2%   +29.33%  (p=0.008 n=5+5)
      XORBytes/128Bytes-8    7.15GB/s ± 0%  12.25GB/s ± 1%   +71.17%  (p=0.008 n=5+5)
      XORBytes/2048Bytes-8   10.9GB/s ± 1%   26.4GB/s ± 0%  +140.99%  (p=0.008 n=5+5)
      XORBytes/32768Bytes-8  11.4GB/s ± 1%   23.8GB/s ± 0%  +108.52%  (p=0.008 n=5+5)
      
      Benchmark: cipher
      
      name               old time/op    new time/op    delta
      AESGCMSeal1K-8        269ns ± 6%     261ns ± 2%     ~     (p=0.246 n=5+5)
      AESGCMOpen1K-8        242ns ± 1%     240ns ± 2%     ~     (p=0.190 n=5+5)
      AESGCMSign8K-8        869ns ± 0%     870ns ± 1%     ~     (p=0.683 n=5+5)
      AESGCMSeal8K-8       1.64µs ± 6%    1.59µs ± 7%     ~     (p=0.151 n=5+5)
      AESGCMOpen8K-8       1.48µs ± 2%    1.46µs ± 0%   -1.39%  (p=0.008 n=5+5)
      AESCFBEncrypt1K-8    1.88µs ± 5%    1.62µs ± 1%  -13.52%  (p=0.008 n=5+5)
      AESCFBDecrypt1K-8    1.76µs ± 1%    1.58µs ± 1%  -10.24%  (p=0.016 n=4+5)
      AESOFB1K-8           1.10µs ± 4%    1.03µs ± 2%   -6.36%  (p=0.008 n=5+5)
      AESCTR1K-8           1.24µs ± 1%    1.17µs ± 0%   -5.96%  (p=0.008 n=5+5)
      AESCBCEncrypt1K-8    1.74µs ± 0%    1.14µs ± 1%  -34.36%  (p=0.008 n=5+5)
      AESCBCDecrypt1K-8    1.28µs ± 1%    1.10µs ± 1%  -14.04%  (p=0.008 n=5+5)
      
      name               old speed      new speed      delta
      AESGCMSeal1K-8     3.81GB/s ± 6%  3.91GB/s ± 2%     ~     (p=0.310 n=5+5)
      AESGCMOpen1K-8     4.23GB/s ± 1%  4.27GB/s ± 2%     ~     (p=0.222 n=5+5)
      AESGCMSign8K-8     9.43GB/s ± 0%  9.41GB/s ± 1%     ~     (p=0.841 n=5+5)
      AESGCMSeal8K-8     5.01GB/s ± 6%  5.16GB/s ± 6%     ~     (p=0.151 n=5+5)
      AESGCMOpen8K-8     5.54GB/s ± 2%  5.62GB/s ± 0%   +1.41%  (p=0.008 n=5+5)
      AESCFBEncrypt1K-8   543MB/s ± 5%   627MB/s ± 1%  +15.55%  (p=0.008 n=5+5)
      AESCFBDecrypt1K-8   580MB/s ± 1%   646MB/s ± 1%  +11.40%  (p=0.016 n=4+5)
      AESOFB1K-8          925MB/s ± 4%   988MB/s ± 2%   +6.73%  (p=0.008 n=5+5)
      AESCTR1K-8          821MB/s ± 1%   873MB/s ± 1%   +6.34%  (p=0.008 n=5+5)
      AESCBCEncrypt1K-8   588MB/s ± 1%   897MB/s ± 1%  +52.36%  (p=0.008 n=5+5)
      AESCBCDecrypt1K-8   799MB/s ± 1%   929MB/s ± 1%  +16.32%  (p=0.008 n=5+5)
      
      Change-Id: I42e6ba66c23dad853d33c924fca7b0ed805cefdd
      Reviewed-on: https://go-review.googlesource.com/c/125316Reviewed-by: 's avatarIlya Tocar <ilya.tocar@intel.com>
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      5168fcf6
    • Katie Hockman's avatar
      Revert "os: add support for long path names on unix RemoveAll" · 0e0f7986
      Katie Hockman authored
      This reverts commit 85143d35.
      
      Reason for revert: Breaking all Darwin and FreeBSD builds. Trybots did not pass for this.
      
      Change-Id: I5494e14ad5ab9cf6e1e225a25b2e8b38f3359d13
      Reviewed-on: https://go-review.googlesource.com/c/145897Reviewed-by: 's avatarKatie Hockman <katie@golang.org>
      Run-TryBot: Katie Hockman <katie@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0e0f7986
    • Peter Weinberger's avatar
      cmd/trace: use new traceparser to parse the raw trace files · 08816cb8
      Peter Weinberger authored
      Change-Id: I8b224ae48a2f8acd5a64c9ff283e97821479a9a8
      Reviewed-on: https://go-review.googlesource.com/c/145457
      Run-TryBot: Peter Weinberger <pjw@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarHyang-Ah Hana Kim <hyangah@gmail.com>
      08816cb8
    • Yury Smolsky's avatar
      crypto/cipher: make stream examples runnable in the playground · f570b54c
      Yury Smolsky authored
      Updates #9679
      
      Change-Id: I53412cf0142364de5f76e8affc15d607bfa2ad23
      Reviewed-on: https://go-review.googlesource.com/c/145838
      Run-TryBot: Yury Smolsky <yury@smolsky.by>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarFilippo Valsorda <filippo@golang.org>
      f570b54c
    • Michael Anthony Knyszek's avatar
      runtime: add physical memory scavenging test · 7836457e
      Michael Anthony Knyszek authored
      This change introduces a test to malloc_test which checks for overuse
      of physical memory in the large object treap. Due to fragmentation,
      there may be many pages of physical memory that are sitting unused in
      large-object space.
      
      For #14045.
      
      Change-Id: I3722468f45063b11246dde6301c7ad02ae34be55
      Reviewed-on: https://go-review.googlesource.com/c/138918
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      7836457e
    • Michael Anthony Knyszek's avatar
      runtime: scavenge large spans before heap growth · c803ffc6
      Michael Anthony Knyszek authored
      This change scavenges the largest spans before growing the heap for
      physical pages to "make up" for the newly-mapped space which,
      presumably, will be touched.
      
      In theory, this approach to scavenging helps reduce the RSS of an
      application by marking fragments in memory as reclaimable to the OS
      more eagerly than before. In practice this may not necessarily be
      true, depending on how sysUnused is implemented for each platform.
      
      Fixes #14045.
      
      Change-Id: Iab60790be05935865fc71f793cb9323ab00a18bd
      Reviewed-on: https://go-review.googlesource.com/c/139719
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      c803ffc6
    • Michael Anthony Knyszek's avatar
      runtime: sysUsed spans after trimming · db82a1bc
      Michael Anthony Knyszek authored
      Currently, we mark a whole span as sysUsed before trimming, but this
      unnecessarily tells the OS that the trimmed section from the span is
      used when it may have been scavenged, if s was scavenged. Overall,
      this just makes invocations of sysUsed a little more fine-grained.
      
      It does come with the caveat that now heap_released needs to be managed
      a little more carefully in allocSpanLocked. In this case, we choose to
      (like before this change) negate any effect the span has on
      heap_released before trimming, then add it back if the trimmed part is
      scavengable.
      
      For #14045.
      
      Change-Id: Ifa384d989611398bfad3ca39d3bb595a5962a3ea
      Reviewed-on: https://go-review.googlesource.com/c/140198
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      db82a1bc
    • Michael Anthony Knyszek's avatar
      runtime: extend ReadMemStatsSlow to re-compute HeapReleased · 61d40c8a
      Michael Anthony Knyszek authored
      This change extends the test function ReadMemStatsSlow to re-compute
      the HeapReleased statistic such that it is checked in testing to be
      consistent with the bookkeeping done in the runtime.
      
      Change-Id: I49f5c2620f5731edea8e9f768744cf997dcd7c22
      Reviewed-on: https://go-review.googlesource.com/c/142397
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      61d40c8a
    • Michael Anthony Knyszek's avatar
      runtime: remove npreleased in favor of boolean · 78bb91cb
      Michael Anthony Knyszek authored
      This change removes npreleased from mspan since spans may now either be
      scavenged or not scavenged; how many of its pages were actually scavenged
      doesn't matter. It saves some space in mpsan overhead too, as the boolean
      fits into what would otherwise be struct padding.
      
      For #14045.
      
      Change-Id: I63f25a4d98658f5fe21c6a466fc38c59bfc5d0f5
      Reviewed-on: https://go-review.googlesource.com/c/139737
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      78bb91cb
    • Michael Anthony Knyszek's avatar
      runtime: separate scavenged spans · b46bf024
      Michael Anthony Knyszek authored
      This change adds a new treap to mheap which contains scavenged (i.e.
      its physical pages were returned to the OS) spans.
      
      As of this change, spans may no longer be partially scavenged.
      
      For #14045.
      
      Change-Id: I0d428a255c6d3f710b9214b378f841b997df0993
      Reviewed-on: https://go-review.googlesource.com/c/139298
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      b46bf024
    • Michael Anthony Knyszek's avatar
      runtime: add successor method to treap · 239341f3
      Michael Anthony Knyszek authored
      This change adds a method for computing a treap node's successor
      to the treap, which will simplify the implementation of algorithms
      used for heap growth scavenging.
      
      For #14045.
      
      Change-Id: If2af3f2707dbcbef5fb6e42cb2712061f9da5129
      Reviewed-on: https://go-review.googlesource.com/c/144718
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      239341f3
    • Michael Anthony Knyszek's avatar
      runtime: add predecessor method to treap · 5dd4d1f8
      Michael Anthony Knyszek authored
      This change adds a method for computing a treap node's predecessor
      to the treap, which will simplify the implementation of algorithms
      used for heap growth scavenging.
      
      For #14045.
      
      Change-Id: Id203e4bd246db3504f2f0c5163ec36f4579167df
      Reviewed-on: https://go-review.googlesource.com/c/144717
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      5dd4d1f8
    • Oliver Stenbom's avatar
      os: add support for long path names on unix RemoveAll · 85143d35
      Oliver Stenbom authored
      On unix systems, long enough path names will fail when performing syscalls
      like `Lstat`. The current RemoveAll uses several of these syscalls, and so
      will fail for long paths. This can be risky, as it can let users "hide"
      files from the system or otherwise make long enough paths for programs
      to fail. By using `Unlinkat` and `Openat` syscalls instead, RemoveAll is
      safer on unix systems. Initially implemented for linux, darwin, and several bsds.
      
      Fixes #27029
      Co-authored-by: 's avatarGiuseppe Capizzi <gcapizzi@pivotal.io>
      Co-authored-by: 's avatarJulia Nedialkova <yulia.nedyalkova@sap.com>
      
      Change-Id: Id9fcdf4775962b021b7ff438dc51ee6d16bb5f56
      GitHub-Last-Rev: b30a621fe359fa2acbb055445b54202b0c508167
      GitHub-Pull-Request: golang/go#27871
      Reviewed-on: https://go-review.googlesource.com/c/137442
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      85143d35
    • Pontus Leitzler's avatar
      crypto/tls: clarify documentation on tls.Config.NextProtos · 7bada2cf
      Pontus Leitzler authored
      This change will aid users to make less mistakes where you, for example, define both HTTP/1.1 and H2, but in the wrong order.
      
          package main
      
          import (
              "crypto/tls"
              "net"
          )
      
          func main() {
              srv := &http.Server{
                  TLSConfig: &tls.Config{
                      NextProtos: []string{"http/1.1", "h2"},
                  },
              }
              srv.ListenAndServeTLS("server.crt", "server.key")
          }
      
      When using major browsers or curl, they will never be served H2 since they also support HTTP/1.0 and the list is processed in order.
      
      Change-Id: Id14098b5e48f624ca308137917874d475c2f22a0
      GitHub-Last-Rev: f3594a6411bf7dde71c850f3e85a2b5a21974129
      GitHub-Pull-Request: golang/go#28367
      Reviewed-on: https://go-review.googlesource.com/c/144387Reviewed-by: 's avatarFilippo Valsorda <filippo@golang.org>
      7bada2cf
    • Ben Shi's avatar
      test/codegen: improve arithmetic tests · 455ef3f6
      Ben Shi authored
      This CL fixes several typos and adds two more cases
      to arithmetic test.
      
      Change-Id: I086560162ea351e2166866e444e2317da36c1729
      Reviewed-on: https://go-review.googlesource.com/c/145210
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      455ef3f6
    • Alan Donovan's avatar
      bufio: suggest io.ReadFull at (*Reader).Read · 891682c8
      Alan Donovan authored
      Many times when using bufio.Reader I imagine, incorrectly, that it
      implements the retry loop itself, being a high-level buffered wrapper
      around, say, a file descriptor prone to short reads. This comment
      would have saved me much time.
      
      Change-Id: I34c790e0d7c1515430a76d02ce4739b586a36ba7
      Reviewed-on: https://go-review.googlesource.com/c/145577Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarRob Pike <r@golang.org>
      891682c8
    • Ian Lance Taylor's avatar
      cmd/compile: add -lang flag to specify language version · 2e9f0817
      Ian Lance Taylor authored
      The default language version is the current one.
      
      For testing purposes, added a check that type aliases require version
      go1.9. There is no consistent support for changes made before 1.12.
      
      Updates #28221
      
      Change-Id: Ia1ef63fff911d5fd29ef79d5fa4e20cfd945feb7
      Reviewed-on: https://go-review.googlesource.com/c/144340
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      2e9f0817
    • Tim Cooper's avatar
      crypto/tls: remove unneeded calls to bytes.NewReader · d1836e62
      Tim Cooper authored
      Updates #28269
      
      Change-Id: Iae765f85e6ae49f4b581161ed489b2f5ee27cdba
      Reviewed-on: https://go-review.googlesource.com/c/145737Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      d1836e62
    • BigMikes's avatar
      net/http: in Transport, don't error on non-chunked response with Trailer header · 7b0fa529
      BigMikes authored
      There are cases where HTTP message specifies the Trailer header
      but not the Transfer-Encoding = chunked. The existing
      implementation would return an error in those cases, without
      returning also the message itself.
      Instead, it would be preferable to let the library user decide when
      the message is valid or not.
      This change makes the fixTrailer() function not to return an error
      and to keep the Trailer value in the Response.Header map but not
      populate Response.Trailer.
      
      Fixes #27197
      
      Change-Id: Ic1e96791fde97f31dc5ecb8de05c8e4f49465c2c
      Reviewed-on: https://go-review.googlesource.com/c/145398
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      7b0fa529
    • Ben Shi's avatar
      cmd/compile: optimize amd64's ADDQconstmodify/ADDLconstmodify · 5f5ea3fd
      Ben Shi authored
      This CL optimize amd64's code:
      "ADDQ $-1, MEM_OP" -> "DECQ MEM_OP"
      "ADDL $-1, MEM_OP" -> "DECL MEM_OP"
      
      1. The total size of pkg/linux_amd64 (excluding cmd/compile)
      decreases about 0.1KB.
      
      2. The go1 benchmark shows little regression, excluding noise.
      name                     old time/op    new time/op    delta
      BinaryTree17-4              2.60s ± 5%     2.64s ± 3%  +1.53%  (p=0.000 n=38+39)
      Fannkuch11-4                2.37s ± 2%     2.38s ± 2%    ~     (p=0.950 n=40+40)
      FmtFprintfEmpty-4          40.4ns ± 5%    40.5ns ± 5%    ~     (p=0.711 n=40+40)
      FmtFprintfString-4         72.4ns ± 5%    72.3ns ± 3%    ~     (p=0.485 n=40+40)
      FmtFprintfInt-4            79.7ns ± 3%    80.1ns ± 3%    ~     (p=0.124 n=40+40)
      FmtFprintfIntInt-4          126ns ± 3%     127ns ± 3%  +0.71%  (p=0.027 n=40+40)
      FmtFprintfPrefixedInt-4     153ns ± 4%     153ns ± 2%    ~     (p=0.604 n=40+40)
      FmtFprintfFloat-4           206ns ± 5%     210ns ± 5%  +1.79%  (p=0.002 n=40+40)
      FmtManyArgs-4               498ns ± 3%     496ns ± 3%    ~     (p=0.099 n=40+40)
      GobDecode-4                6.48ms ± 6%    6.47ms ± 7%    ~     (p=0.686 n=39+40)
      GobEncode-4                5.95ms ± 7%    5.96ms ± 6%    ~     (p=0.670 n=40+34)
      Gzip-4                      224ms ± 6%     223ms ± 5%    ~     (p=0.143 n=40+40)
      Gunzip-4                   36.5ms ± 4%    36.5ms ± 4%    ~     (p=0.556 n=40+40)
      HTTPClientServer-4         60.7µs ± 2%    59.9µs ± 3%  -1.20%  (p=0.000 n=39+39)
      JSONEncode-4               9.03ms ± 4%    9.04ms ± 4%    ~     (p=0.589 n=40+40)
      JSONDecode-4               49.4ms ± 4%    49.2ms ± 4%    ~     (p=0.276 n=40+40)
      Mandelbrot200-4            3.80ms ± 4%    3.79ms ± 4%    ~     (p=0.837 n=40+40)
      GoParse-4                  3.15ms ± 5%    3.13ms ± 5%    ~     (p=0.240 n=40+40)
      RegexpMatchEasy0_32-4      72.9ns ± 3%    72.0ns ± 8%  -1.25%  (p=0.003 n=40+40)
      RegexpMatchEasy0_1K-4       229ns ± 5%     230ns ± 4%    ~     (p=0.318 n=40+40)
      RegexpMatchEasy1_32-4      66.9ns ± 3%    67.3ns ± 7%    ~     (p=0.817 n=40+40)
      RegexpMatchEasy1_1K-4       371ns ± 5%     370ns ± 4%    ~     (p=0.275 n=40+40)
      RegexpMatchMedium_32-4      106ns ± 4%     104ns ± 7%  -2.28%  (p=0.000 n=40+40)
      RegexpMatchMedium_1K-4     32.0µs ± 2%    31.4µs ± 3%  -2.08%  (p=0.000 n=40+40)
      RegexpMatchHard_32-4       1.54µs ± 7%    1.52µs ± 3%  -1.80%  (p=0.007 n=39+40)
      RegexpMatchHard_1K-4       45.8µs ± 4%    45.5µs ± 3%    ~     (p=0.707 n=40+40)
      Revcomp-4                   401ms ± 5%     401ms ± 6%    ~     (p=0.935 n=40+40)
      Template-4                 62.4ms ± 4%    61.2ms ± 3%  -1.85%  (p=0.000 n=40+40)
      TimeParse-4                 315ns ± 2%     318ns ± 3%  +1.10%  (p=0.002 n=40+40)
      TimeFormat-4                297ns ± 3%     298ns ± 3%    ~     (p=0.238 n=40+40)
      [Geo mean]                 45.8µs         45.7µs       -0.22%
      
      name                     old speed      new speed      delta
      GobDecode-4               119MB/s ± 6%   119MB/s ± 7%    ~     (p=0.684 n=39+40)
      GobEncode-4               129MB/s ± 7%   128MB/s ± 6%    ~     (p=0.413 n=40+34)
      Gzip-4                   86.6MB/s ± 6%  87.0MB/s ± 6%    ~     (p=0.145 n=40+40)
      Gunzip-4                  532MB/s ± 4%   532MB/s ± 4%    ~     (p=0.556 n=40+40)
      JSONEncode-4              215MB/s ± 4%   215MB/s ± 4%    ~     (p=0.583 n=40+40)
      JSONDecode-4             39.3MB/s ± 4%  39.5MB/s ± 4%    ~     (p=0.277 n=40+40)
      GoParse-4                18.4MB/s ± 5%  18.5MB/s ± 5%    ~     (p=0.229 n=40+40)
      RegexpMatchEasy0_32-4     439MB/s ± 3%   445MB/s ± 8%  +1.28%  (p=0.003 n=40+40)
      RegexpMatchEasy0_1K-4    4.46GB/s ± 4%  4.45GB/s ± 4%    ~     (p=0.343 n=40+40)
      RegexpMatchEasy1_32-4     479MB/s ± 3%   476MB/s ± 7%    ~     (p=0.855 n=40+40)
      RegexpMatchEasy1_1K-4    2.76GB/s ± 5%  2.77GB/s ± 4%    ~     (p=0.250 n=40+40)
      RegexpMatchMedium_32-4   9.36MB/s ± 4%  9.58MB/s ± 6%  +2.31%  (p=0.001 n=40+40)
      RegexpMatchMedium_1K-4   32.0MB/s ± 2%  32.7MB/s ± 3%  +2.12%  (p=0.000 n=40+40)
      RegexpMatchHard_32-4     20.7MB/s ± 7%  21.1MB/s ± 3%  +1.95%  (p=0.005 n=40+40)
      RegexpMatchHard_1K-4     22.4MB/s ± 4%  22.5MB/s ± 3%    ~     (p=0.689 n=40+40)
      Revcomp-4                 634MB/s ± 5%   634MB/s ± 6%    ~     (p=0.935 n=40+40)
      Template-4               31.1MB/s ± 3%  31.7MB/s ± 3%  +1.88%  (p=0.000 n=40+40)
      [Geo mean]                129MB/s        130MB/s       +0.62%
      
      Change-Id: I9d61ee810d900920c572cbe89e2f1626bfed12b7
      Reviewed-on: https://go-review.googlesource.com/c/145209
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      5f5ea3fd
  3. 29 Oct, 2018 8 commits