)]}'
{
  "log": [
    {
      "commit": "43d5d4cd4e0e3390b0b645d5c3ef1187642403d8",
      "tree": "c6f19681f2ae79c2e55b6c6113e9b5ea183e3bcb",
      "parents": [
        "fa5810519dcbfaa60974183cbe11c6c0d050a23d",
        "470b9ed42b44d6e57a1303611bc363992cfed65d"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Mon Dec 25 22:57:46 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 25 22:57:46 2023"
      },
      "message": "Merge pull request #68 from MarkLodato/cli-readme\n\nREADME: update instructions to install CLI"
    },
    {
      "commit": "470b9ed42b44d6e57a1303611bc363992cfed65d",
      "tree": "c6f19681f2ae79c2e55b6c6113e9b5ea183e3bcb",
      "parents": [
        "fa5810519dcbfaa60974183cbe11c6c0d050a23d"
      ],
      "author": {
        "name": "Mark Lodato",
        "email": "lodato@google.com",
        "time": "Wed Nov 16 19:23:10 2022"
      },
      "committer": {
        "name": "Mark Lodato",
        "email": "lodato@google.com",
        "time": "Thu Nov 17 12:22:32 2022"
      },
      "message": "README: update instructions to install CLI\n\n- Add instructions for using `go install` to run the binary.\n- Note that `go get` is only for use as a library.\n"
    },
    {
      "commit": "fa5810519dcbfaa60974183cbe11c6c0d050a23d",
      "tree": "b696486d4868401ac338875e3a000ee674809db6",
      "parents": [
        "544b4180ac705b7605231d4a4550a1acb22a19fe"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Jan 16 01:10:46 2022"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Jan 16 01:10:46 2022"
      },
      "message": "Ensure arm64 frame sizes are 8 (mod 16)\n\nFixes #63\n"
    },
    {
      "commit": "544b4180ac705b7605231d4a4550a1acb22a19fe",
      "tree": "e5a4c4cd6beb5307dd3c32ef56d78a2f6913fbcd",
      "parents": [
        "0eaccd47634261995ecbb48b545add281213ff88"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Jun 08 04:05:37 2021"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Jun 08 04:05:37 2021"
      },
      "message": "Update AUTHORS and CONTRIBUTORS\n"
    },
    {
      "commit": "0eaccd47634261995ecbb48b545add281213ff88",
      "tree": "5fdca10b695dbb4976cca43dfb79d881487f0c86",
      "parents": [
        "3ff355f7bbcd12d666f5a3ad9aaa9ae5aff7a069"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Jun 08 04:02:21 2021"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Jun 08 04:02:21 2021"
      },
      "message": "Fix dangling golden_test filename link\n"
    },
    {
      "commit": "3ff355f7bbcd12d666f5a3ad9aaa9ae5aff7a069",
      "tree": "59954717f535ed2e9b3cee55b864acb4e10d1502",
      "parents": [
        "b9440b43e5e8981c33bfb6f551afbf5a9d5ce277",
        "0a27eb7fa2ce51441cd324e10da0dcdb06eab018"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Jun 08 03:56:06 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 08 03:56:06 2021"
      },
      "message": "Merge pull request #51 from topos-ai/bytereader\n\nAdd ReadByte method, satisfies the io.ByteReader interface"
    },
    {
      "commit": "b9440b43e5e8981c33bfb6f551afbf5a9d5ce277",
      "tree": "5f05f05726eab9b75142b341855ebe5ada53725a",
      "parents": [
        "ef348818abe44abbf681b3ba3c036ae1da3573ba",
        "da2bb3382a3962f48760e59434c9de82ff9f66a5"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Jun 08 03:46:59 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 08 03:46:59 2021"
      },
      "message": "Merge pull request #40 from EdwardBetts/spelling\n\ncorrect spelling mistake"
    },
    {
      "commit": "ef348818abe44abbf681b3ba3c036ae1da3573ba",
      "tree": "ce3b69e07e3d2145ff27d5f426a5c6269f954174",
      "parents": [
        "33fc3d5d8d990c6bccaf4da1d7bb661e0cc53cb6",
        "e149cdd03f0f703a5b8f534b403225522e087412"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Jun 08 03:46:43 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 08 03:46:43 2021"
      },
      "message": "Merge pull request #60 from alexlegg/master\n\nUse a more inclusive text for golden input."
    },
    {
      "commit": "33fc3d5d8d990c6bccaf4da1d7bb661e0cc53cb6",
      "tree": "9fec1357b218e22c86a5ac3b5abb62bcbe5cb23e",
      "parents": [
        "674baa8c7fc30da5df3074a459494a7e6b427dff",
        "b46926bc8ad2fbf12e5cd0170b33bd762fd9c1f4"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun May 02 03:53:20 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 02 03:53:20 2021"
      },
      "message": "Merge pull request #61 from cuonglm/cuonglm/fix-wrong-arm64-scaled-register-format\n\nFix wrong arm64 scaled register format"
    },
    {
      "commit": "b46926bc8ad2fbf12e5cd0170b33bd762fd9c1f4",
      "tree": "9fec1357b218e22c86a5ac3b5abb62bcbe5cb23e",
      "parents": [
        "674baa8c7fc30da5df3074a459494a7e6b427dff"
      ],
      "author": {
        "name": "Cuong Manh Le",
        "email": "cuong.manhle.vn@gmail.com",
        "time": "Tue Apr 20 17:16:25 2021"
      },
      "committer": {
        "name": "Cuong Manh Le",
        "email": "cuong.manhle.vn@gmail.com",
        "time": "Tue Apr 20 17:16:25 2021"
      },
      "message": "Fix wrong arm64 scaled register format\n\nArm64 does not have scaled register format, casue snappy test failed for\ncurrent go tip:\n\n\t$ go version\n\tgo version devel go1.17-24875e3880 Tue Apr 20 15:14:05 2021 +0000 darwin/arm64\n\t$ go test\n\t# github.com/golang/snappy\n\t./encode_arm64.s:385: arm64 doesn\u0027t support scaled register format\n\t./encode_arm64.s:675: arm64 doesn\u0027t support scaled register format\n\tasm: assembly of ./encode_arm64.s failed\n\tFAIL\tgithub.com/golang/snappy [build failed]\n\nSee https://go-review.googlesource.com/c/go/+/289589\n"
    },
    {
      "commit": "e149cdd03f0f703a5b8f534b403225522e087412",
      "tree": "b0f7af6c21c227762fc65aec115b8ea2e6ac6ed5",
      "parents": [
        "674baa8c7fc30da5df3074a459494a7e6b427dff"
      ],
      "author": {
        "name": "Alex Legg",
        "email": "alexlegg@google.com",
        "time": "Mon Apr 12 06:30:42 2021"
      },
      "committer": {
        "name": "Alex Legg",
        "email": "alexlegg@google.com",
        "time": "Mon Apr 12 06:34:41 2021"
      },
      "message": "Use a more inclusive text for golden input.\n\nReplace the first chapter of Tom Sawyer with the first 400 lines of\nIsaac Newton\u0027s Opticks.\n\nThe rawsnappy version was generated by cmd/snappytool in this repo.\n\nThe extendMatch test goldens were updated as per the instructions in\ngolden_test.go (with an update to account for the golang version of\nextendMatch being inlined.)\n"
    },
    {
      "commit": "674baa8c7fc30da5df3074a459494a7e6b427dff",
      "tree": "5bbf3ddf1162e96e96a3019f84811da0b2416ee8",
      "parents": [
        "196ae77b8a26000fa30caa8b2b541e09674dbc43",
        "f81760ec4c9208e6e6866cf18e1888544fd2dbc9"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Nov 03 22:46:00 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 22:46:00 2020"
      },
      "message": "Merge pull request #56 from AWSjswinney/arm64-port-pr\n\nbug fix to encode_arm64.s: some registers overwritten in memmove call\r\n\r\nARM64 memmove clobbers R16 and R17 as of\r\nhttps://go-review.googlesource.com/c/go/+/243357"
    },
    {
      "commit": "f81760ec4c9208e6e6866cf18e1888544fd2dbc9",
      "tree": "5bbf3ddf1162e96e96a3019f84811da0b2416ee8",
      "parents": [
        "196ae77b8a26000fa30caa8b2b541e09674dbc43"
      ],
      "author": {
        "name": "Jonathan Swinney",
        "email": "jswinney@amazon.com",
        "time": "Fri Oct 02 15:49:34 2020"
      },
      "committer": {
        "name": "Jonathan Swinney",
        "email": "jswinney@amazon.com",
        "time": "Fri Oct 02 15:49:34 2020"
      },
      "message": "bug fix to encode_arm64.s: some registers overwritten in memmove call\n\nIn encode_arm64.s, encodeBlock, two of the registers added during the port from\namd64 were not saved or restored for the memmove call. Instead of saving them,\njust recalculate their values. Additionally, I made a few small changes to\nimprove things since I\u0027ve learned a bit more about ARMv8 assembly.\n - The CMP instruction accepts an immediate as the first argument\n - use LDP/STP instead of SIMD instructions\n\nThe change to use the load-pair and store-pair instructions instead of the SIMD\ninstructions results in some modest performance improvements as meastured on\nNeoverse N1 (Graviton 2).\n\nname              old time/op    new time/op    delta\nWordsDecode1e1-2    25.9ns ± 1%    26.1ns ± 1%  +0.66%  (p\u003d0.005 n\u003d10+10)\nWordsDecode1e2-2     107ns ± 0%     105ns ± 0%  -1.87%  (p\u003d0.000 n\u003d10+10)\nWordsDecode1e3-2     953ns ± 0%     901ns ± 0%  -5.50%  (p\u003d0.000 n\u003d10+10)\nWordsDecode1e4-2    10.6µs ± 0%     9.9µs ± 2%  -6.60%  (p\u003d0.000 n\u003d7+10)\nWordsDecode1e5-2     170µs ± 1%     164µs ± 1%  -3.12%  (p\u003d0.000 n\u003d10+9)\nWordsDecode1e6-2    1.71ms ± 0%    1.66ms ± 0%  -2.98%  (p\u003d0.000 n\u003d10+10)\nWordsEncode1e1-2    22.0ns ± 1%    21.9ns ± 1%  -0.67%  (p\u003d0.006 n\u003d8+10)\nWordsEncode1e2-2     248ns ± 0%     245ns ± 0%  -1.21%  (p\u003d0.002 n\u003d8+10)\nWordsEncode1e3-2    2.50µs ± 0%    2.49µs ± 0%    ~     (p\u003d0.103 n\u003d10+9)\nWordsEncode1e4-2    27.8µs ± 3%    28.0µs ± 2%    ~     (p\u003d0.075 n\u003d10+10)\nWordsEncode1e5-2     339µs ± 0%     343µs ± 0%  +1.18%  (p\u003d0.000 n\u003d9+10)\nWordsEncode1e6-2    3.39ms ± 0%    3.42ms ± 0%  +0.94%  (p\u003d0.000 n\u003d10+10)\nRandomEncode-2      74.8µs ± 1%    77.1µs ± 1%  +3.16%  (p\u003d0.000 n\u003d10+10)\n_UFlat0-2           68.8µs ± 1%    66.4µs ± 2%  -3.54%  (p\u003d0.000 n\u003d10+10)\n_UFlat1-2            770µs ± 0%     740µs ± 1%  -3.93%  (p\u003d0.000 n\u003d10+10)\n_UFlat2-2           6.57µs ± 0%    6.55µs ± 0%  -0.25%  (p\u003d0.000 n\u003d8+10)\n_UFlat3-2            183ns ± 0%     178ns ± 1%  -2.84%  (p\u003d0.000 n\u003d9+10)\n_UFlat4-2           9.76µs ± 1%    9.56µs ± 0%  -2.07%  (p\u003d0.000 n\u003d10+9)\n_UFlat5-2            301µs ± 0%     293µs ± 0%  -2.67%  (p\u003d0.000 n\u003d9+10)\n_UFlat6-2            280µs ± 1%     267µs ± 1%  -4.63%  (p\u003d0.000 n\u003d10+10)\n_UFlat7-2            241µs ± 0%     230µs ± 1%  -4.68%  (p\u003d0.000 n\u003d9+10)\n_UFlat8-2            745µs ± 0%     715µs ± 1%  -4.11%  (p\u003d0.000 n\u003d10+10)\n_UFlat9-2           1.01ms ± 0%    0.96ms ± 0%  -4.60%  (p\u003d0.000 n\u003d10+10)\n_UFlat10-2          62.3µs ± 1%    59.3µs ± 1%  -4.72%  (p\u003d0.000 n\u003d10+9)\n_UFlat11-2           258µs ± 0%     252µs ± 1%  -2.56%  (p\u003d0.000 n\u003d10+10)\n_ZFlat0-2            135µs ± 1%     132µs ± 1%  -1.88%  (p\u003d0.000 n\u003d10+8)\n_ZFlat1-2           1.76ms ± 0%    1.74ms ± 0%  -1.00%  (p\u003d0.000 n\u003d9+9)\n_ZFlat2-2           9.54µs ± 0%    9.84µs ± 5%  +3.18%  (p\u003d0.000 n\u003d10+10)\n_ZFlat3-2            449ns ± 0%     447ns ± 0%  -0.38%  (p\u003d0.000 n\u003d10+9)\n_ZFlat4-2           15.6µs ± 0%    16.0µs ± 4%    ~     (p\u003d0.118 n\u003d9+10)\n_ZFlat5-2            560µs ± 1%     555µs ± 1%  -0.89%  (p\u003d0.000 n\u003d9+9)\n_ZFlat6-2            531µs ± 0%     534µs ± 0%  +0.64%  (p\u003d0.000 n\u003d10+10)\n_ZFlat7-2            466µs ± 0%     468µs ± 0%  +0.32%  (p\u003d0.003 n\u003d10+10)\n_ZFlat8-2           1.42ms ± 0%    1.42ms ± 0%  +0.43%  (p\u003d0.000 n\u003d10+10)\n_ZFlat9-2           1.93ms ± 0%    1.94ms ± 0%  +0.44%  (p\u003d0.000 n\u003d10+10)\n_ZFlat10-2           120µs ± 0%     121µs ± 3%    ~     (p\u003d0.436 n\u003d9+9)\n_ZFlat11-2           433µs ± 0%     437µs ± 0%  +1.03%  (p\u003d0.000 n\u003d10+10)\nExtendMatch-2       9.77µs ± 0%    9.76µs ± 0%  -0.13%  (p\u003d0.050 n\u003d10+10)\n\nAs measured on Cortex-A53 (Raspberry Pi 3)\n\nname              old time/op    new time/op    delta\nWordsDecode1e1-4     152ns ± 2%     151ns ± 0%    ~     (p\u003d0.536 n\u003d10+8)\nWordsDecode1e2-4     639ns ± 0%     617ns ± 0%  -3.54%  (p\u003d0.000 n\u003d9+8)\nWordsDecode1e3-4    6.74µs ± 2%    6.35µs ± 0%  -5.75%  (p\u003d0.000 n\u003d10+9)\nWordsDecode1e4-4    66.7µs ± 0%    63.5µs ± 0%  -4.69%  (p\u003d0.000 n\u003d9+9)\nWordsDecode1e5-4     715µs ± 0%     684µs ± 0%  -4.38%  (p\u003d0.000 n\u003d8+8)\nWordsDecode1e6-4    6.87ms ± 2%    6.53ms ± 1%  -4.99%  (p\u003d0.000 n\u003d10+9)\nWordsEncode1e1-4     127ns ± 2%     126ns ± 0%    ~     (p\u003d0.065 n\u003d10+9)\nWordsEncode1e2-4    1.58µs ± 0%    1.57µs ± 0%  -0.99%  (p\u003d0.000 n\u003d8+8)\nWordsEncode1e3-4    15.1µs ± 0%    14.9µs ± 0%  -1.46%  (p\u003d0.000 n\u003d9+8)\nWordsEncode1e4-4     148µs ± 0%     148µs ± 4%    ~     (p\u003d0.497 n\u003d9+10)\nWordsEncode1e5-4    1.54ms ± 0%    1.54ms ± 0%  +0.12%  (p\u003d0.012 n\u003d10+8)\nWordsEncode1e6-4    14.4ms ± 0%    14.4ms ± 1%  -0.47%  (p\u003d0.015 n\u003d9+8)\nRandomEncode-4      1.13ms ± 1%    1.13ms ± 1%    ~     (p\u003d0.529 n\u003d10+10)\n_UFlat0-4            294µs ± 0%     288µs ± 1%  -2.08%  (p\u003d0.000 n\u003d9+9)\n_UFlat1-4           3.05ms ± 1%    2.98ms ± 1%  -2.22%  (p\u003d0.000 n\u003d9+9)\n_UFlat2-4           37.3µs ± 0%    37.4µs ± 1%    ~     (p\u003d0.093 n\u003d8+9)\n_UFlat3-4            909ns ± 0%     914ns ± 2%    ~     (p\u003d0.526 n\u003d8+10)\n_UFlat4-4           58.7µs ± 0%    58.1µs ± 0%  -1.09%  (p\u003d0.000 n\u003d8+10)\n_UFlat5-4           1.22ms ± 0%    1.19ms ± 1%  -2.14%  (p\u003d0.000 n\u003d8+8)\n_UFlat6-4           1.03ms ± 0%    0.99ms ± 0%  -3.28%  (p\u003d0.000 n\u003d9+8)\n_UFlat7-4            895µs ± 0%     861µs ± 0%  -3.79%  (p\u003d0.000 n\u003d8+8)\n_UFlat8-4           2.83ms ± 0%    2.75ms ± 0%  -2.88%  (p\u003d0.000 n\u003d7+8)\n_UFlat9-4           3.85ms ± 1%    3.73ms ± 1%  -3.03%  (p\u003d0.000 n\u003d8+9)\n_UFlat10-4           286µs ± 0%     282µs ± 0%  -1.59%  (p\u003d0.000 n\u003d9+9)\n_UFlat11-4          1.06ms ± 0%    1.02ms ± 0%  -3.58%  (p\u003d0.000 n\u003d8+9)\n_ZFlat0-4            620µs ± 0%     620µs ± 1%    ~     (p\u003d0.963 n\u003d9+8)\n_ZFlat1-4           9.49ms ± 1%    9.67ms ± 3%  +1.87%  (p\u003d0.000 n\u003d9+10)\n_ZFlat2-4           61.8µs ± 0%    62.3µs ± 3%    ~     (p\u003d0.829 n\u003d8+10)\n_ZFlat3-4           2.80µs ± 1%    2.79µs ± 0%  -0.55%  (p\u003d0.000 n\u003d8+8)\n_ZFlat4-4            108µs ± 0%     109µs ± 0%  +0.55%  (p\u003d0.000 n\u003d10+8)\n_ZFlat5-4           2.59ms ± 2%    2.58ms ± 1%    ~     (p\u003d0.274 n\u003d10+8)\n_ZFlat6-4           2.39ms ± 3%    2.40ms ± 1%    ~     (p\u003d0.631 n\u003d10+10)\n_ZFlat7-4           2.11ms ± 0%    2.08ms ± 1%  -1.23%  (p\u003d0.000 n\u003d10+9)\n_ZFlat8-4           6.86ms ± 0%    6.92ms ± 1%  +0.78%  (p\u003d0.000 n\u003d9+8)\n_ZFlat9-4           9.42ms ± 0%    9.40ms ± 1%    ~     (p\u003d0.606 n\u003d8+9)\n_ZFlat10-4           620µs ± 1%     621µs ± 4%    ~     (p\u003d0.173 n\u003d8+10)\n_ZFlat11-4          1.94ms ± 0%    1.93ms ± 0%  -0.52%  (p\u003d0.001 n\u003d9+8)\nExtendMatch-4       69.3µs ± 2%    69.2µs ± 0%    ~     (p\u003d0.515 n\u003d10+8)\n"
    },
    {
      "commit": "196ae77b8a26000fa30caa8b2b541e09674dbc43",
      "tree": "262b9294f9c247b6acbbbcac3b9cd596eaec0133",
      "parents": [
        "1801c13ca2120699ab8c7b30ca84632c3af6ba0f"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Jul 07 13:17:29 2020"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Jul 07 13:17:29 2020"
      },
      "message": "A+C: add Jonathan Swinney \u003cjswinney@amazon.com\u003e.\n"
    },
    {
      "commit": "1801c13ca2120699ab8c7b30ca84632c3af6ba0f",
      "tree": "5c596b1988a00b99268c33cc610c1a4ccb683aec",
      "parents": [
        "ff6b7dc882cf4cfba7ee0b9f7dcc1ac096c554aa",
        "ea060ccb722354394b85e5b999a0406559557083"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Jul 07 13:11:05 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 13:11:05 2020"
      },
      "message": "Merge pull request #53 from AWSjswinney/arm64-port-pr\n\nport amd64 assembly to arm64"
    },
    {
      "commit": "ea060ccb722354394b85e5b999a0406559557083",
      "tree": "5c596b1988a00b99268c33cc610c1a4ccb683aec",
      "parents": [
        "ff6b7dc882cf4cfba7ee0b9f7dcc1ac096c554aa"
      ],
      "author": {
        "name": "Jonathan Swinney",
        "email": "jswinney@amazon.com",
        "time": "Wed Jul 01 03:01:52 2020"
      },
      "committer": {
        "name": "Jonathan Swinney",
        "email": "jswinney@amazon.com",
        "time": "Wed Jul 01 03:01:52 2020"
      },
      "message": "port amd64 assembly to arm64\n\nThis change was produced by taking the amd64 assembly and reproducing it\nas closely as possible for the arm64 arch.\n\nThe main differences:\n - arm64 uses registers R1-R17 which are mapped directly onto an amd64\n   counterpart\n - arm64 requires 8 additional bytes of stack so callee args are displaced\n   by 8 bytes from amd64\n - operands to CMP instructions are reversed except in a few cases where\n   arm64 uses a BLS (branch less-same) instead of JAE (jump above-equal)\n - immediates in some cases have to be split to a separate MOVD instruction\n - shifts can be combined with another instruction, such as an ADD, in some\n   cases\n - The amd64 BSFQ instruction is implemented with a bit reversal and\n   leading zero count instruction\n - memclear on arm64 makes use of the SIMD instructions to clear 64 bytes\n   at a time and uses a pointer comparison instead of a counter to reduce\n   the number of instructions in the loop\n\nTested on an AWS m6g.large (ARMv8.2):\nname              old time/op    new time/op     delta\nWordsDecode1e1-2    29.2ns ± 0%     26.2ns ± 1%   -10.51%  (p\u003d0.000 n\u003d9+10)\nWordsDecode1e2-2     187ns ± 0%      107ns ± 0%   -42.78%  (p\u003d0.000 n\u003d7+10)\nWordsDecode1e3-2    2.16µs ± 1%     0.95µs ± 0%   -55.85%  (p\u003d0.000 n\u003d10+10)\nWordsDecode1e4-2    30.1µs ± 0%     10.4µs ± 2%   -65.40%  (p\u003d0.000 n\u003d10+10)\nWordsDecode1e5-2     348µs ± 0%      168µs ± 0%   -51.86%  (p\u003d0.000 n\u003d10+9)\nWordsDecode1e6-2    3.47ms ± 0%     1.71ms ± 0%   -50.66%  (p\u003d0.000 n\u003d10+10)\nWordsEncode1e1-2    19.4ns ± 0%     21.7ns ± 1%   +12.06%  (p\u003d0.000 n\u003d8+10)\nWordsEncode1e2-2    2.09µs ± 0%     0.25µs ± 0%   -88.14%  (p\u003d0.000 n\u003d9+10)\nWordsEncode1e3-2    6.67µs ± 1%     2.49µs ± 0%   -62.63%  (p\u003d0.000 n\u003d10+10)\nWordsEncode1e4-2    63.5µs ± 1%     29.4µs ± 1%   -53.63%  (p\u003d0.000 n\u003d10+9)\nWordsEncode1e5-2     722µs ± 0%      345µs ± 0%   -52.21%  (p\u003d0.000 n\u003d10+10)\nWordsEncode1e6-2    7.17ms ± 0%     3.41ms ± 0%   -52.46%  (p\u003d0.000 n\u003d10+8)\nRandomEncode-2       106µs ± 2%       78µs ± 0%   -26.02%  (p\u003d0.000 n\u003d10+10)\n_UFlat0-2            152µs ± 0%       69µs ± 1%   -54.90%  (p\u003d0.000 n\u003d10+9)\n_UFlat1-2           1.57ms ± 0%     0.77ms ± 0%   -51.10%  (p\u003d0.000 n\u003d9+10)\n_UFlat2-2           6.84µs ± 0%     6.55µs ± 0%    -4.25%  (p\u003d0.000 n\u003d10+8)\n_UFlat3-2            312ns ± 0%      183ns ± 0%   -41.35%  (p\u003d0.000 n\u003d10+9)\n_UFlat4-2           15.4µs ± 1%      9.7µs ± 1%   -36.79%  (p\u003d0.000 n\u003d10+10)\n_UFlat5-2            625µs ± 0%      301µs ± 1%   -51.88%  (p\u003d0.000 n\u003d9+10)\n_UFlat6-2            570µs ± 0%      278µs ± 0%   -51.18%  (p\u003d0.000 n\u003d10+9)\n_UFlat7-2            490µs ± 0%      240µs ± 1%   -50.95%  (p\u003d0.000 n\u003d10+10)\n_UFlat8-2           1.52ms ± 0%     0.74ms ± 0%   -51.01%  (p\u003d0.000 n\u003d8+7)\n_UFlat9-2           2.00ms ± 0%     1.01ms ± 0%   -49.49%  (p\u003d0.000 n\u003d10+10)\n_UFlat10-2           132µs ± 0%       62µs ± 2%   -53.19%  (p\u003d0.000 n\u003d10+10)\n_UFlat11-2           497µs ± 0%      258µs ± 0%   -48.11%  (p\u003d0.000 n\u003d10+9)\n_ZFlat0-2            346µs ± 1%      136µs ± 5%   -60.70%  (p\u003d0.000 n\u003d10+9)\n_ZFlat1-2           3.63ms ± 0%     1.76ms ± 0%   -51.60%  (p\u003d0.000 n\u003d10+8)\n_ZFlat2-2           13.2µs ± 0%      9.5µs ± 0%   -27.62%  (p\u003d0.000 n\u003d8+9)\n_ZFlat3-2           2.49µs ± 0%     0.45µs ± 0%   -81.96%  (p\u003d0.002 n\u003d8+10)\n_ZFlat4-2           50.5µs ± 0%     15.7µs ± 1%   -68.96%  (p\u003d0.000 n\u003d10+9)\n_ZFlat5-2           1.40ms ± 0%     0.56ms ± 0%   -60.20%  (p\u003d0.000 n\u003d9+9)\n_ZFlat6-2           1.13ms ± 0%     0.54ms ± 0%   -52.39%  (p\u003d0.000 n\u003d10+9)\n_ZFlat7-2            961µs ± 0%      472µs ± 0%   -50.83%  (p\u003d0.000 n\u003d10+10)\n_ZFlat8-2           3.03ms ± 0%     1.43ms ± 0%   -52.90%  (p\u003d0.000 n\u003d9+10)\n_ZFlat9-2           3.88ms ± 0%     1.95ms ± 0%   -49.72%  (p\u003d0.000 n\u003d10+10)\n_ZFlat10-2           339µs ± 0%      123µs ± 3%   -63.82%  (p\u003d0.000 n\u003d10+10)\n_ZFlat11-2           973µs ± 0%      433µs ± 0%   -55.49%  (p\u003d0.000 n\u003d10+10)\nExtendMatch-2       22.1µs ± 1%      9.8µs ± 0%   -55.63%  (p\u003d0.000 n\u003d10+10)\n\nname              old speed      new speed       delta\nWordsDecode1e1-2   342MB/s ± 0%    382MB/s ± 1%   +11.77%  (p\u003d0.000 n\u003d9+10)\nWordsDecode1e2-2   535MB/s ± 0%    934MB/s ± 0%   +74.43%  (p\u003d0.000 n\u003d10+10)\nWordsDecode1e3-2   463MB/s ± 1%   1049MB/s ± 0%  +126.52%  (p\u003d0.000 n\u003d10+10)\nWordsDecode1e4-2   333MB/s ± 0%    961MB/s ± 2%  +189.04%  (p\u003d0.000 n\u003d10+10)\nWordsDecode1e5-2   287MB/s ± 0%    597MB/s ± 0%  +107.72%  (p\u003d0.000 n\u003d10+9)\nWordsDecode1e6-2   288MB/s ± 0%    584MB/s ± 0%  +102.67%  (p\u003d0.000 n\u003d10+10)\nWordsEncode1e1-2   515MB/s ± 0%    460MB/s ± 0%   -10.70%  (p\u003d0.000 n\u003d10+10)\nWordsEncode1e2-2  47.8MB/s ± 0%  403.3MB/s ± 0%  +743.40%  (p\u003d0.000 n\u003d10+10)\nWordsEncode1e3-2   150MB/s ± 1%    401MB/s ± 0%  +167.66%  (p\u003d0.000 n\u003d10+9)\nWordsEncode1e4-2   157MB/s ± 1%    340MB/s ± 1%  +115.66%  (p\u003d0.000 n\u003d10+9)\nWordsEncode1e5-2   138MB/s ± 0%    290MB/s ± 0%  +109.24%  (p\u003d0.000 n\u003d10+10)\nWordsEncode1e6-2   139MB/s ± 0%    293MB/s ± 0%  +110.35%  (p\u003d0.000 n\u003d10+8)\nRandomEncode-2    9.93GB/s ± 2%  13.42GB/s ± 0%   +35.15%  (p\u003d0.000 n\u003d10+10)\n_UFlat0-2          672MB/s ± 0%   1489MB/s ± 1%  +121.75%  (p\u003d0.000 n\u003d10+9)\n_UFlat1-2          446MB/s ± 0%    913MB/s ± 0%  +104.48%  (p\u003d0.000 n\u003d9+10)\n_UFlat2-2         18.0GB/s ± 0%   18.8GB/s ± 0%    +4.44%  (p\u003d0.000 n\u003d8+8)\n_UFlat3-2          641MB/s ± 0%   1091MB/s ± 0%   +70.19%  (p\u003d0.000 n\u003d10+10)\n_UFlat4-2         6.66GB/s ± 1%  10.53GB/s ± 1%   +58.19%  (p\u003d0.000 n\u003d10+10)\n_UFlat5-2          655MB/s ± 0%   1362MB/s ± 1%  +107.80%  (p\u003d0.000 n\u003d9+10)\n_UFlat6-2          267MB/s ± 0%    547MB/s ± 0%  +104.82%  (p\u003d0.000 n\u003d10+9)\n_UFlat7-2          255MB/s ± 0%    521MB/s ± 1%  +103.89%  (p\u003d0.000 n\u003d10+10)\n_UFlat8-2          281MB/s ± 0%    574MB/s ± 0%  +104.14%  (p\u003d0.000 n\u003d8+7)\n_UFlat9-2          241MB/s ± 0%    478MB/s ± 0%   +97.97%  (p\u003d0.000 n\u003d10+10)\n_UFlat10-2         896MB/s ± 0%   1914MB/s ± 2%  +113.64%  (p\u003d0.000 n\u003d10+10)\n_UFlat11-2         371MB/s ± 0%    715MB/s ± 0%   +92.72%  (p\u003d0.000 n\u003d10+9)\n_ZFlat0-2          296MB/s ± 1%    754MB/s ± 5%  +154.57%  (p\u003d0.000 n\u003d10+9)\n_ZFlat1-2          194MB/s ± 0%    400MB/s ± 0%  +106.63%  (p\u003d0.000 n\u003d10+8)\n_ZFlat2-2         9.35GB/s ± 0%  12.92GB/s ± 0%   +38.17%  (p\u003d0.000 n\u003d8+10)\n_ZFlat3-2         80.3MB/s ± 0%  445.6MB/s ± 0%  +454.64%  (p\u003d0.000 n\u003d10+10)\n_ZFlat4-2         2.03GB/s ± 0%   6.54GB/s ± 1%  +222.19%  (p\u003d0.000 n\u003d10+9)\n_ZFlat5-2          292MB/s ± 0%    733MB/s ± 0%  +151.25%  (p\u003d0.000 n\u003d9+9)\n_ZFlat6-2          135MB/s ± 0%    284MB/s ± 0%  +110.05%  (p\u003d0.000 n\u003d10+9)\n_ZFlat7-2          130MB/s ± 0%    265MB/s ± 0%  +103.38%  (p\u003d0.000 n\u003d10+10)\n_ZFlat8-2          141MB/s ± 0%    299MB/s ± 0%  +112.30%  (p\u003d0.000 n\u003d9+10)\n_ZFlat9-2          124MB/s ± 0%    247MB/s ± 0%   +98.90%  (p\u003d0.000 n\u003d10+10)\n_ZFlat10-2         350MB/s ± 0%    967MB/s ± 3%  +176.44%  (p\u003d0.000 n\u003d10+10)\n_ZFlat11-2         189MB/s ± 0%    426MB/s ± 0%  +124.65%  (p\u003d0.000 n\u003d10+10)\n"
    },
    {
      "commit": "0a27eb7fa2ce51441cd324e10da0dcdb06eab018",
      "tree": "b0613fc8587563e8ed7cf1a127155d00a4b57e6e",
      "parents": [
        "ff6b7dc882cf4cfba7ee0b9f7dcc1ac096c554aa"
      ],
      "author": {
        "name": "Eric Buth",
        "email": "eric@topos.com",
        "time": "Mon Feb 17 16:26:15 2020"
      },
      "committer": {
        "name": "Eric Buth",
        "email": "eric@topos.com",
        "time": "Mon Feb 17 18:39:43 2020"
      },
      "message": "Add ReadByte method, satisfies the io.ByteReader interface\n"
    },
    {
      "commit": "ff6b7dc882cf4cfba7ee0b9f7dcc1ac096c554aa",
      "tree": "46c2468ade3ec4d941996f42a9e4d494db56fa93",
      "parents": [
        "059a9b19228c09e7cac546e378e7356fad1b96aa"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Wed Sep 04 06:34:54 2019"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Wed Sep 04 06:35:34 2019"
      },
      "message": "Add comments re handling block and stream formats\n"
    },
    {
      "commit": "059a9b19228c09e7cac546e378e7356fad1b96aa",
      "tree": "f4dccb0043093c06534975b00ff4695910846abd",
      "parents": [
        "c9879f99e6b406abe831130b642c21396628ece3"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Wed Sep 04 06:29:47 2019"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Wed Sep 04 06:29:47 2019"
      },
      "message": "A+C: add Klaus Post \u003cklauspost@gmail.com\u003e.\n"
    },
    {
      "commit": "c9879f99e6b406abe831130b642c21396628ece3",
      "tree": "bfc1e50f0e9a05125e24e8a0bacc2d4262412ec1",
      "parents": [
        "5610373d2fa9862fd75fbf3edbc8a31b539ad41a",
        "efb0d863a3fb34cbc654818daa8ce61181d51af6"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Wed Sep 04 06:27:17 2019"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 04 06:27:17 2019"
      },
      "message": "Merge pull request #48 from klauspost/use-copy-for-non-overlapping\n\nUse faster copy when not overlapping"
    },
    {
      "commit": "5610373d2fa9862fd75fbf3edbc8a31b539ad41a",
      "tree": "0f046d95437a3d40430dc9106181445352be2f15",
      "parents": [
        "2a8bb927dd31d8daada140a5d09578521ce5c36a",
        "f6ad6c8bb828e59bc6b1b058c0e817a3a3b01225"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Wed Sep 04 06:26:23 2019"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 04 06:26:23 2019"
      },
      "message": "Merge pull request #49 from klauspost/faster-overlapping-copies\n\nFaster overlapping copies"
    },
    {
      "commit": "f6ad6c8bb828e59bc6b1b058c0e817a3a3b01225",
      "tree": "0f046d95437a3d40430dc9106181445352be2f15",
      "parents": [
        "2a8bb927dd31d8daada140a5d09578521ce5c36a"
      ],
      "author": {
        "name": "Klaus Post",
        "email": "klauspost@gmail.com",
        "time": "Wed Jul 10 20:45:59 2019"
      },
      "committer": {
        "name": "Klaus Post",
        "email": "klauspost@gmail.com",
        "time": "Sun Sep 01 17:55:24 2019"
      },
      "message": "Faster overlapping copies\n\nEliminates bounds check on every byte copied.\n\nBenchmark measured on AMD64 but with `-tags\u003dnoasm`:\n\n```\n\u003ebenchstat old.txt new.txt\nname        old time/op    new time/op    delta\n_UFlat0-8      194µs ± 3%     150µs ± 2%  -22.59%  (p\u003d0.000 n\u003d10+10)\n_UFlat1-8     1.62ms ± 1%    1.41ms ± 2%  -12.70%   (p\u003d0.000 n\u003d9+10)\n_UFlat2-8     8.91µs ± 4%    8.76µs ± 2%     ~     (p\u003d0.343 n\u003d10+10)\n_UFlat3-8      222ns ± 2%     224ns ± 1%   +1.00%   (p\u003d0.028 n\u003d10+9)\n_UFlat4-8     28.4µs ± 2%    20.3µs ± 3%  -28.45%  (p\u003d0.000 n\u003d10+10)\n_UFlat5-8      797µs ± 5%     603µs ± 2%  -24.34%   (p\u003d0.000 n\u003d10+9)\n_UFlat6-8      565µs ± 1%     531µs ± 2%   -6.16%    (p\u003d0.000 n\u003d8+9)\n_UFlat7-8      494µs ± 4%     457µs ± 2%   -7.61%  (p\u003d0.000 n\u003d10+10)\n_UFlat8-8     1.55ms ± 4%    1.40ms ± 2%   -9.48%   (p\u003d0.000 n\u003d10+9)\n_UFlat9-8     1.93ms ± 1%    1.83ms ± 2%   -5.44%   (p\u003d0.000 n\u003d10+9)\n_UFlat10-8     186µs ± 2%     138µs ± 5%  -26.04%  (p\u003d0.000 n\u003d10+10)\n_UFlat11-8     524µs ± 2%     478µs ± 3%   -8.68%  (p\u003d0.000 n\u003d10+10)\n\nname        old speed      new speed      delta\n_UFlat0-8    528MB/s ± 3%   682MB/s ± 2%  +29.18%  (p\u003d0.000 n\u003d10+10)\n_UFlat1-8    434MB/s ± 1%   497MB/s ± 2%  +14.56%   (p\u003d0.000 n\u003d9+10)\n_UFlat2-8   13.8GB/s ± 4%  14.1GB/s ± 2%     ~     (p\u003d0.353 n\u003d10+10)\n_UFlat3-8    901MB/s ± 1%   890MB/s ± 1%   -1.18%    (p\u003d0.008 n\u003d9+9)\n_UFlat4-8   3.60GB/s ± 2%  5.03GB/s ± 3%  +39.76%  (p\u003d0.000 n\u003d10+10)\n_UFlat5-8    514MB/s ± 5%   679MB/s ± 2%  +32.04%   (p\u003d0.000 n\u003d10+9)\n_UFlat6-8    269MB/s ± 1%   287MB/s ± 2%   +6.57%    (p\u003d0.000 n\u003d8+9)\n_UFlat7-8    253MB/s ± 4%   274MB/s ± 2%   +8.23%  (p\u003d0.000 n\u003d10+10)\n_UFlat8-8    276MB/s ± 4%   305MB/s ± 2%  +10.43%   (p\u003d0.000 n\u003d10+9)\n_UFlat9-8    249MB/s ± 1%   263MB/s ± 2%   +5.76%   (p\u003d0.000 n\u003d10+9)\n_UFlat10-8   637MB/s ± 2%   862MB/s ± 5%  +35.25%  (p\u003d0.000 n\u003d10+10)\n_UFlat11-8   352MB/s ± 2%   385MB/s ± 3%   +9.51%  (p\u003d0.000 n\u003d10+10)\n```\n"
    },
    {
      "commit": "efb0d863a3fb34cbc654818daa8ce61181d51af6",
      "tree": "43fc7828bc87ed2dc42625fd4850f444bb4ba202",
      "parents": [
        "2a8bb927dd31d8daada140a5d09578521ce5c36a"
      ],
      "author": {
        "name": "Klaus Post",
        "email": "klauspost@gmail.com",
        "time": "Wed Jul 10 20:27:37 2019"
      },
      "committer": {
        "name": "Klaus Post",
        "email": "klauspost@gmail.com",
        "time": "Sun Sep 01 17:53:02 2019"
      },
      "message": "Use faster copy when not overlapping\n\nUse the built-in copy function when the source doesn\u0027t overlap the destination.\n\nAgain benchmarks are a bit polarized based on how often this is the case, but should be a solid improvement for all non-amd64 users.\n\nBenchmark  measured on AMD64 but with `-tags\u003dnoasm`:\n\n```\n\u003ebenchstat old.txt new.txt\nname        old time/op    new time/op    delta\n_UFlat0-8      194µs ± 3%     130µs ± 2%   -33.14%  (p\u003d0.000 n\u003d10+10)\n_UFlat1-8     1.62ms ± 1%    1.42ms ± 1%   -11.98%    (p\u003d0.000 n\u003d9+9)\n_UFlat2-8     8.91µs ± 4%    8.73µs ± 1%      ~      (p\u003d0.182 n\u003d10+9)\n_UFlat3-8      222ns ± 2%     219ns ± 6%    -1.36%   (p\u003d0.022 n\u003d10+9)\n_UFlat4-8     28.4µs ± 2%    11.5µs ± 1%   -59.57%  (p\u003d0.000 n\u003d10+10)\n_UFlat5-8      797µs ± 5%     536µs ± 1%   -32.77%  (p\u003d0.000 n\u003d10+10)\n_UFlat6-8      565µs ± 1%     571µs ± 1%    +1.04%   (p\u003d0.007 n\u003d8+10)\n_UFlat7-8      494µs ± 4%     496µs ± 3%      ~     (p\u003d0.986 n\u003d10+10)\n_UFlat8-8     1.55ms ± 4%    1.53ms ± 3%      ~     (p\u003d0.280 n\u003d10+10)\n_UFlat9-8     1.93ms ± 1%    1.98ms ± 3%    +2.57%  (p\u003d0.000 n\u003d10+10)\n_UFlat10-8     186µs ± 2%     102µs ± 2%   -45.14%  (p\u003d0.000 n\u003d10+10)\n_UFlat11-8     524µs ± 2%     510µs ± 1%    -2.56%   (p\u003d0.000 n\u003d10+8)\n\nname        old speed      new speed      delta\n_UFlat0-8    528MB/s ± 3%   790MB/s ± 1%   +49.54%  (p\u003d0.000 n\u003d10+10)\n_UFlat1-8    434MB/s ± 1%   493MB/s ± 1%   +13.61%    (p\u003d0.000 n\u003d9+9)\n_UFlat2-8   13.8GB/s ± 4%  14.1GB/s ± 2%      ~      (p\u003d0.182 n\u003d10+9)\n_UFlat3-8    901MB/s ± 1%   912MB/s ± 6%    +1.18%    (p\u003d0.026 n\u003d9+9)\n_UFlat4-8   3.60GB/s ± 2%  8.91GB/s ± 1%  +147.32%  (p\u003d0.000 n\u003d10+10)\n_UFlat5-8    514MB/s ± 5%   764MB/s ± 2%   +48.59%  (p\u003d0.000 n\u003d10+10)\n_UFlat6-8    269MB/s ± 1%   266MB/s ± 1%    -1.03%   (p\u003d0.009 n\u003d8+10)\n_UFlat7-8    253MB/s ± 4%   252MB/s ± 3%      ~     (p\u003d0.985 n\u003d10+10)\n_UFlat8-8    276MB/s ± 4%   279MB/s ± 3%      ~     (p\u003d0.288 n\u003d10+10)\n_UFlat9-8    249MB/s ± 1%   243MB/s ± 3%    -2.51%  (p\u003d0.000 n\u003d10+10)\n_UFlat10-8   637MB/s ± 2%  1162MB/s ± 2%   +82.29%  (p\u003d0.000 n\u003d10+10)\n_UFlat11-8   352MB/s ± 2%   361MB/s ± 1%    +2.62%   (p\u003d0.000 n\u003d10+8)\n```\n\nCo-Authored-By: Nigel Tao \u003cnigeltao@golang.org\u003e\n"
    },
    {
      "commit": "2a8bb927dd31d8daada140a5d09578521ce5c36a",
      "tree": "c98223c030fb48f1de839a21a0966b467285f1b7",
      "parents": [
        "2e65f85255dbc3072edf28d6b5b8efc472979f5a",
        "f05e7a5086fed27f3b02816f732ade183bb0f9e1"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Mon Feb 18 23:22:22 2019"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 18 23:22:22 2019"
      },
      "message": "Merge pull request #46 from creachadair/gomod\n\nAdd a go.mod file for basic Go modules support."
    },
    {
      "commit": "f05e7a5086fed27f3b02816f732ade183bb0f9e1",
      "tree": "c98223c030fb48f1de839a21a0966b467285f1b7",
      "parents": [
        "2e65f85255dbc3072edf28d6b5b8efc472979f5a"
      ],
      "author": {
        "name": "M. J. Fromberger",
        "email": "michael.j.fromberger@gmail.com",
        "time": "Mon Feb 11 21:35:21 2019"
      },
      "committer": {
        "name": "M. J. Fromberger",
        "email": "michael.j.fromberger@gmail.com",
        "time": "Mon Feb 11 21:35:28 2019"
      },
      "message": "Add a go.mod file for basic Go modules support.\n"
    },
    {
      "commit": "2e65f85255dbc3072edf28d6b5b8efc472979f5a",
      "tree": "12e9b061932ff93ee50636e1bdc69a1bf3a59c9d",
      "parents": [
        "e45cd318e0c1612dbf7e2a5644c9d213fc8894f4"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri May 18 05:39:59 2018"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri May 18 05:45:09 2018"
      },
      "message": "Fix snappytool to use block, not stream, format\n\nThe key difference is replacing snappy.NewWriter and snappy.NewReader\nwith snappy.Encode and snappy.Decode.\n\nThis change restores the behavior of the previous (written in C)\nsnappytool program.\n"
    },
    {
      "commit": "e45cd318e0c1612dbf7e2a5644c9d213fc8894f4",
      "tree": "34f5b721facade2c28fc2a5fdb69f2a6836a6778",
      "parents": [
        "553a641470496b2327abcac10b36396bd98e45c9",
        "35a8406c2110ed6d335c26bec02c0efe4d24b53b"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri May 18 05:18:59 2018"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 18 05:18:59 2018"
      },
      "message": "Merge pull request #38 from mattn/cmd-snappytool\n\nrewrite snappytool in go"
    },
    {
      "commit": "da2bb3382a3962f48760e59434c9de82ff9f66a5",
      "tree": "a98102993e86ec5924196dd5b276f4104ad7a8c0",
      "parents": [
        "553a641470496b2327abcac10b36396bd98e45c9"
      ],
      "author": {
        "name": "Edward Betts",
        "email": "edward@4angle.com",
        "time": "Fri Sep 01 11:38:27 2017"
      },
      "committer": {
        "name": "Edward Betts",
        "email": "edward@4angle.com",
        "time": "Fri Sep 01 11:38:27 2017"
      },
      "message": "correct spelling mistake"
    },
    {
      "commit": "35a8406c2110ed6d335c26bec02c0efe4d24b53b",
      "tree": "34f5b721facade2c28fc2a5fdb69f2a6836a6778",
      "parents": [
        "553a641470496b2327abcac10b36396bd98e45c9"
      ],
      "author": {
        "name": "Yasuhiro Matsumoto",
        "email": "mattn.jp@gmail.com",
        "time": "Tue Mar 28 07:41:23 2017"
      },
      "committer": {
        "name": "Yasuhiro Matsumoto",
        "email": "mattn.jp@gmail.com",
        "time": "Tue Mar 28 12:05:51 2017"
      },
      "message": "rewrite snappytool in go\n"
    },
    {
      "commit": "553a641470496b2327abcac10b36396bd98e45c9",
      "tree": "5fb5836b98c606d48e4db56b141d060b19c7b6c4",
      "parents": [
        "7db9049039a047d955fe8c19b83c8ff5abd765c7",
        "0d9c4c05f138df50573330060c3317a9b36387ae"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Wed Feb 15 23:32:05 2017"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 15 23:32:05 2017"
      },
      "message": "Merge pull request #37 from fatedier/master\n\nfix typo"
    },
    {
      "commit": "0d9c4c05f138df50573330060c3317a9b36387ae",
      "tree": "5fb5836b98c606d48e4db56b141d060b19c7b6c4",
      "parents": [
        "7db9049039a047d955fe8c19b83c8ff5abd765c7"
      ],
      "author": {
        "name": "fatedier",
        "email": "fatedier@gmail.com",
        "time": "Wed Jan 25 07:05:35 2017"
      },
      "committer": {
        "name": "fatedier",
        "email": "fatedier@gmail.com",
        "time": "Wed Jan 25 07:07:54 2017"
      },
      "message": "fix typo\n"
    },
    {
      "commit": "7db9049039a047d955fe8c19b83c8ff5abd765c7",
      "tree": "7ab562283d6491019eb26a30a9285e298e3c91e3",
      "parents": [
        "d9eb7a3d35ec988b8585d4a0068e462c27d28380",
        "5a0054d7b7e6dfeefcea1ee745dcae42c9680ac6"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Jan 19 01:47:23 2017"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 19 01:47:23 2017"
      },
      "message": "Merge pull request #36 from sguiheux/gofmt\n\nRun gofmt."
    },
    {
      "commit": "5a0054d7b7e6dfeefcea1ee745dcae42c9680ac6",
      "tree": "7ab562283d6491019eb26a30a9285e298e3c91e3",
      "parents": [
        "d9eb7a3d35ec988b8585d4a0068e462c27d28380"
      ],
      "author": {
        "name": "Steven Guiheux",
        "email": "steven.guiheux@corp.ovh.com",
        "time": "Wed Jan 18 10:51:53 2017"
      },
      "committer": {
        "name": "Steven Guiheux",
        "email": "steven.guiheux@corp.ovh.com",
        "time": "Wed Jan 18 10:51:53 2017"
      },
      "message": "fix: gofmt\n"
    },
    {
      "commit": "d9eb7a3d35ec988b8585d4a0068e462c27d28380",
      "tree": "1cc36a52e2567a3bc1d2ab8d66cdc8b999b621ca",
      "parents": [
        "d6668316e43571d7dde95be6fd077f96de002f8b"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun May 29 05:00:41 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun May 29 05:00:41 2016"
      },
      "message": "Support the COPY_4 tag.\n\nIt is a valid encoding, even if no longer issued by most encoders.\n\nname              old speed      new speed      delta\nWordsDecode1e1-8   525MB/s ± 0%   504MB/s ± 1%  -4.04%   (p\u003d0.000 n\u003d9+10)\nWordsDecode1e2-8  1.23GB/s ± 0%  1.23GB/s ± 1%    ~      (p\u003d0.678 n\u003d10+9)\nWordsDecode1e3-8  1.54GB/s ± 0%  1.53GB/s ± 1%  -0.75%   (p\u003d0.000 n\u003d10+9)\nWordsDecode1e4-8  1.53GB/s ± 0%  1.51GB/s ± 3%  -1.46%   (p\u003d0.000 n\u003d9+10)\nWordsDecode1e5-8   793MB/s ± 0%   777MB/s ± 2%  -2.01%   (p\u003d0.017 n\u003d9+10)\nWordsDecode1e6-8   917MB/s ± 1%   917MB/s ± 1%    ~      (p\u003d0.473 n\u003d8+10)\nWordsEncode1e1-8   641MB/s ± 2%   641MB/s ± 0%    ~      (p\u003d0.780 n\u003d10+9)\nWordsEncode1e2-8   583MB/s ± 0%   580MB/s ± 0%  -0.41%   (p\u003d0.001 n\u003d10+9)\nWordsEncode1e3-8   647MB/s ± 1%   648MB/s ± 0%    ~      (p\u003d0.326 n\u003d10+9)\nWordsEncode1e4-8   442MB/s ± 1%   452MB/s ± 0%  +2.20%   (p\u003d0.000 n\u003d10+8)\nWordsEncode1e5-8   355MB/s ± 1%   355MB/s ± 0%    ~      (p\u003d0.880 n\u003d10+8)\nWordsEncode1e6-8   433MB/s ± 0%   434MB/s ± 0%    ~       (p\u003d0.700 n\u003d8+8)\nRandomEncode-8    14.2GB/s ± 3%  14.2GB/s ± 3%    ~      (p\u003d0.780 n\u003d10+9)\n_UFlat0-8         2.18GB/s ± 1%  2.19GB/s ± 0%    ~      (p\u003d0.447 n\u003d10+9)\n_UFlat1-8         1.40GB/s ± 2%  1.41GB/s ± 0%  +0.73%   (p\u003d0.043 n\u003d9+10)\n_UFlat2-8         23.4GB/s ± 3%  23.5GB/s ± 2%    ~      (p\u003d0.497 n\u003d9+10)\n_UFlat3-8         1.90GB/s ± 0%  1.91GB/s ± 0%  +0.30%    (p\u003d0.002 n\u003d8+9)\n_UFlat4-8         13.9GB/s ± 2%  14.0GB/s ± 1%    ~      (p\u003d0.720 n\u003d9+10)\n_UFlat5-8         1.96GB/s ± 1%  1.97GB/s ± 0%  +0.81%   (p\u003d0.000 n\u003d10+9)\n_UFlat6-8          813MB/s ± 0%   814MB/s ± 0%  +0.17%   (p\u003d0.037 n\u003d8+10)\n_UFlat7-8          783MB/s ± 2%   785MB/s ± 0%    ~       (p\u003d0.340 n\u003d9+9)\n_UFlat8-8          859MB/s ± 0%   857MB/s ± 0%    ~       (p\u003d0.074 n\u003d8+9)\n_UFlat9-8          719MB/s ± 1%   719MB/s ± 1%    ~      (p\u003d0.621 n\u003d10+9)\n_UFlat10-8        2.84GB/s ± 0%  2.84GB/s ± 0%  +0.19%   (p\u003d0.043 n\u003d10+9)\n_UFlat11-8        1.05GB/s ± 1%  1.05GB/s ± 0%    ~       (p\u003d0.523 n\u003d9+8)\n_ZFlat0-8         1.04GB/s ± 2%  1.04GB/s ± 0%    ~       (p\u003d0.222 n\u003d9+9)\n_ZFlat1-8          535MB/s ± 0%   534MB/s ± 0%    ~       (p\u003d0.059 n\u003d9+9)\n_ZFlat2-8         15.6GB/s ± 3%  15.7GB/s ± 1%    ~      (p\u003d0.720 n\u003d9+10)\n_ZFlat3-8          723MB/s ± 0%   740MB/s ± 3%  +2.36%   (p\u003d0.034 n\u003d8+10)\n_ZFlat4-8         9.16GB/s ± 1%  9.20GB/s ± 1%    ~       (p\u003d0.297 n\u003d9+9)\n_ZFlat5-8          987MB/s ± 1%   991MB/s ± 0%    ~       (p\u003d0.167 n\u003d9+8)\n_ZFlat6-8          378MB/s ± 2%   379MB/s ± 0%    ~       (p\u003d0.334 n\u003d9+8)\n_ZFlat7-8          350MB/s ± 2%   352MB/s ± 0%  +0.60%    (p\u003d0.014 n\u003d9+8)\n_ZFlat8-8          397MB/s ± 0%   396MB/s ± 1%    ~      (p\u003d0.965 n\u003d8+10)\n_ZFlat9-8          328MB/s ± 0%   327MB/s ± 1%    ~       (p\u003d0.409 n\u003d8+9)\n_ZFlat10-8        1.33GB/s ± 0%  1.33GB/s ± 1%    ~      (p\u003d0.356 n\u003d9+10)\n_ZFlat11-8         605MB/s ± 0%   605MB/s ± 1%    ~       (p\u003d0.743 n\u003d9+8)\n"
    },
    {
      "commit": "d6668316e43571d7dde95be6fd077f96de002f8b",
      "tree": "60f19e66a18d6d6e0cc6fc8f778f7a23ec8820f0",
      "parents": [
        "d7b1e156f50d3c4664f683603af70e3e47fa0aa2"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu May 19 03:34:20 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu May 19 03:34:20 2016"
      },
      "message": "Fix BenchmarkExtendMatch to honor the testdata flag.\n"
    },
    {
      "commit": "d7b1e156f50d3c4664f683603af70e3e47fa0aa2",
      "tree": "9aa9e4b34b1aebaf512aa941cf54a64704e55d1a",
      "parents": [
        "aefa7ba4ef3005262bc58a868df27fe6c7ff2359"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Wed May 04 22:17:12 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Wed May 04 22:17:12 2016"
      },
      "message": "Add a benchdataDir flag.\n"
    },
    {
      "commit": "aefa7ba4ef3005262bc58a868df27fe6c7ff2359",
      "tree": "e93687cfbee2c080c007e36d541c320afa507906",
      "parents": [
        "43fea289edce21979658cbbdb3925390890aa86e"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Wed May 04 21:48:01 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Wed May 04 21:48:01 2016"
      },
      "message": "Re-add the testdata flag.\n\nSome build environments need to specify their own testdata dir.\n"
    },
    {
      "commit": "43fea289edce21979658cbbdb3925390890aa86e",
      "tree": "9c2057bc31c2ca64a79844c87ae0b75c170bed41",
      "parents": [
        "b62d312cd2a7474ccb7eb06a4686f0560e4ba7fb"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 23:02:19 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 23:02:19 2016"
      },
      "message": "Remove the snappy.test binary, inadvertently checked in.\n\nFixes #32.\n"
    },
    {
      "commit": "b62d312cd2a7474ccb7eb06a4686f0560e4ba7fb",
      "tree": "85f34703faa4eb2957fdd573a599c3019f0feff1",
      "parents": [
        "dfb3612ba2a044dad98f8b170d2f718467c30691"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 05:28:03 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 05:28:03 2016"
      },
      "message": "Add some benchmark numbers to the README.\n"
    },
    {
      "commit": "dfb3612ba2a044dad98f8b170d2f718467c30691",
      "tree": "19d62f4b6d7324e52169360c4e61bf27b3c15fc3",
      "parents": [
        "c707890a477a74edb4e53dde84613abf3ad29c5d"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 04:21:44 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 04:24:51 2016"
      },
      "message": "Inline the extendMatch call.\n\nCompared to the previous commit:\nname              old speed      new speed      delta\nWordsEncode1e1-8   701MB/s ± 0%   699MB/s ± 1%     ~     (p\u003d0.123 n\u003d10+10)\nWordsEncode1e2-8   460MB/s ± 0%   583MB/s ± 1%  +26.64%  (p\u003d0.000 n\u003d10+10)\nWordsEncode1e3-8   480MB/s ± 0%   647MB/s ± 2%  +34.85%  (p\u003d0.000 n\u003d10+10)\nWordsEncode1e4-8   416MB/s ± 0%   451MB/s ± 0%   +8.30%   (p\u003d0.000 n\u003d10+8)\nWordsEncode1e5-8   297MB/s ± 0%   355MB/s ± 2%  +19.50%   (p\u003d0.000 n\u003d10+9)\nWordsEncode1e6-8   345MB/s ± 0%   433MB/s ± 2%  +25.47%   (p\u003d0.000 n\u003d10+9)\nRandomEncode-8    14.4GB/s ± 2%  14.3GB/s ± 3%     ~     (p\u003d0.075 n\u003d10+10)\n_ZFlat0-8          891MB/s ± 1%  1040MB/s ± 0%  +16.67%    (p\u003d0.000 n\u003d9+9)\n_ZFlat1-8          471MB/s ± 0%   535MB/s ± 1%  +13.68%   (p\u003d0.000 n\u003d9+10)\n_ZFlat2-8         16.2GB/s ± 3%  16.4GB/s ± 1%     ~      (p\u003d0.122 n\u003d10+8)\n_ZFlat3-8          676MB/s ± 0%   762MB/s ± 0%  +12.62%   (p\u003d0.000 n\u003d10+9)\n_ZFlat4-8         8.36GB/s ± 1%  9.47GB/s ± 1%  +13.28%  (p\u003d0.000 n\u003d10+10)\n_ZFlat5-8          852MB/s ± 0%   986MB/s ± 1%  +15.79%   (p\u003d0.000 n\u003d10+9)\n_ZFlat6-8          316MB/s ± 0%   380MB/s ± 1%  +20.41%    (p\u003d0.000 n\u003d8+9)\n_ZFlat7-8          296MB/s ± 0%   353MB/s ± 0%  +19.44%   (p\u003d0.000 n\u003d8+10)\n_ZFlat8-8          331MB/s ± 1%   399MB/s ± 0%  +20.53%    (p\u003d0.000 n\u003d9+8)\n_ZFlat9-8          274MB/s ± 0%   329MB/s ± 0%  +20.27%    (p\u003d0.000 n\u003d8+9)\n_ZFlat10-8        1.17GB/s ± 0%  1.35GB/s ± 1%  +15.15%    (p\u003d0.000 n\u003d9+9)\n_ZFlat11-8         462MB/s ± 0%   608MB/s ± 0%  +31.54%    (p\u003d0.000 n\u003d9+9)\n\nThe net effect of the past four inlining commits, when compared to just\nbefore c3defccc \"Inline the emitCopy call\":\nname              old speed      new speed      delta\nWordsEncode1e1-8   701MB/s ± 1%   699MB/s ± 1%     ~     (p\u003d0.353 n\u003d10+10)\nWordsEncode1e2-8   429MB/s ± 0%   583MB/s ± 1%  +35.95%   (p\u003d0.000 n\u003d9+10)\nWordsEncode1e3-8   447MB/s ± 0%   647MB/s ± 2%  +44.85%   (p\u003d0.000 n\u003d9+10)\nWordsEncode1e4-8   322MB/s ± 1%   451MB/s ± 0%  +40.00%   (p\u003d0.000 n\u003d10+8)\nWordsEncode1e5-8   268MB/s ± 0%   355MB/s ± 2%  +32.41%    (p\u003d0.000 n\u003d9+9)\nWordsEncode1e6-8   313MB/s ± 0%   433MB/s ± 2%  +38.28%    (p\u003d0.000 n\u003d8+9)\nRandomEncode-8    14.4GB/s ± 1%  14.3GB/s ± 3%     ~      (p\u003d0.897 n\u003d8+10)\n_ZFlat0-8          797MB/s ± 2%  1040MB/s ± 0%  +30.53%    (p\u003d0.000 n\u003d9+9)\n_ZFlat1-8          435MB/s ± 1%   535MB/s ± 1%  +22.97%   (p\u003d0.000 n\u003d9+10)\n_ZFlat2-8         16.1GB/s ± 2%  16.4GB/s ± 1%   +1.47%   (p\u003d0.001 n\u003d10+8)\n_ZFlat3-8          633MB/s ± 0%   762MB/s ± 0%  +20.32%   (p\u003d0.000 n\u003d10+9)\n_ZFlat4-8         7.95GB/s ± 1%  9.47GB/s ± 1%  +19.11%  (p\u003d0.000 n\u003d10+10)\n_ZFlat5-8          771MB/s ± 0%   986MB/s ± 1%  +27.83%   (p\u003d0.000 n\u003d10+9)\n_ZFlat6-8          283MB/s ± 0%   380MB/s ± 1%  +34.46%   (p\u003d0.000 n\u003d10+9)\n_ZFlat7-8          265MB/s ± 0%   353MB/s ± 0%  +33.29%   (p\u003d0.000 n\u003d9+10)\n_ZFlat8-8          299MB/s ± 0%   399MB/s ± 0%  +33.36%    (p\u003d0.000 n\u003d9+8)\n_ZFlat9-8          246MB/s ± 1%   329MB/s ± 0%  +33.58%   (p\u003d0.000 n\u003d10+9)\n_ZFlat10-8        1.05GB/s ± 1%  1.35GB/s ± 1%  +28.35%   (p\u003d0.000 n\u003d10+9)\n_ZFlat11-8         411MB/s ± 0%   608MB/s ± 0%  +47.82%   (p\u003d0.000 n\u003d10+9)\n"
    },
    {
      "commit": "c707890a477a74edb4e53dde84613abf3ad29c5d",
      "tree": "a16b1fd17e39327c7def8b0bab7e9a78f097dd71",
      "parents": [
        "5a44a9da2110bee7a93f552127af8a74bad44fe8"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 04:09:05 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 04:11:06 2016"
      },
      "message": "Rearrange the extendMatch register allocation.\n\nThis minimizes the diff in a follow-up commit, when manually inlining.\n\nIt\u0027s not an optimization per se, but for the record:\nname              old speed      new speed      delta\nWordsEncode1e1-8   700MB/s ± 1%   701MB/s ± 0%    ~     (p\u003d0.393 n\u003d10+10)\nWordsEncode1e2-8   460MB/s ± 1%   460MB/s ± 0%    ~     (p\u003d0.393 n\u003d10+10)\nWordsEncode1e3-8   478MB/s ± 2%   480MB/s ± 0%    ~     (p\u003d0.912 n\u003d10+10)\nWordsEncode1e4-8   414MB/s ± 0%   416MB/s ± 0%  +0.64%   (p\u003d0.000 n\u003d9+10)\nWordsEncode1e5-8   296MB/s ± 1%   297MB/s ± 0%    ~      (p\u003d0.113 n\u003d9+10)\nWordsEncode1e6-8   345MB/s ± 0%   345MB/s ± 0%    ~      (p\u003d0.949 n\u003d8+10)\nRandomEncode-8    14.4GB/s ± 2%  14.4GB/s ± 2%    ~      (p\u003d0.278 n\u003d9+10)\n_ZFlat0-8          888MB/s ± 1%   891MB/s ± 1%  +0.35%   (p\u003d0.010 n\u003d10+9)\n_ZFlat1-8          471MB/s ± 1%   471MB/s ± 0%    ~      (p\u003d0.447 n\u003d10+9)\n_ZFlat2-8         16.2GB/s ± 3%  16.2GB/s ± 3%    ~     (p\u003d0.912 n\u003d10+10)\n_ZFlat3-8          675MB/s ± 1%   676MB/s ± 0%    ~      (p\u003d0.150 n\u003d9+10)\n_ZFlat4-8         8.31GB/s ± 1%  8.36GB/s ± 1%  +0.65%  (p\u003d0.035 n\u003d10+10)\n_ZFlat5-8          850MB/s ± 0%   852MB/s ± 0%    ~      (p\u003d0.182 n\u003d9+10)\n_ZFlat6-8          316MB/s ± 0%   316MB/s ± 0%    ~      (p\u003d0.762 n\u003d10+8)\n_ZFlat7-8          294MB/s ± 1%   296MB/s ± 0%  +0.51%    (p\u003d0.006 n\u003d9+8)\n_ZFlat8-8          330MB/s ± 1%   331MB/s ± 1%    ~       (p\u003d0.881 n\u003d9+9)\n_ZFlat9-8          273MB/s ± 0%   274MB/s ± 0%  +0.23%   (p\u003d0.043 n\u003d10+8)\n_ZFlat10-8        1.17GB/s ± 1%  1.17GB/s ± 0%    ~      (p\u003d0.922 n\u003d10+9)\n_ZFlat11-8         461MB/s ± 0%   462MB/s ± 0%    ~      (p\u003d0.219 n\u003d10+9)\n\nAlso:\nname           old time/op  new time/op  delta\nExtendMatch-8  7.92µs ± 2%  7.80µs ± 2%  -1.51%  (p\u003d0.002 n\u003d10+9)\nand note that this is time/op instead of MB/s, so negative is better,\nalthough it\u0027s quite possibly all just noise.\n"
    },
    {
      "commit": "5a44a9da2110bee7a93f552127af8a74bad44fe8",
      "tree": "9937478769cb04b8f2fd6f26c0e5606a32a1891f",
      "parents": [
        "c3defccc353d53ff7091dba7a646f482bf15dc98"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 03:20:53 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 03:20:53 2016"
      },
      "message": "Inline the emitLiteral call.\n\nname              old speed      new speed      delta\nWordsEncode1e1-8   712MB/s ± 1%   700MB/s ± 1%   -1.65%  (p\u003d0.000 n\u003d10+10)\nWordsEncode1e2-8   467MB/s ± 0%   460MB/s ± 1%   -1.53%   (p\u003d0.000 n\u003d9+10)\nWordsEncode1e3-8   483MB/s ± 0%   478MB/s ± 2%   -0.98%   (p\u003d0.007 n\u003d9+10)\nWordsEncode1e4-8   353MB/s ± 1%   414MB/s ± 0%  +17.03%   (p\u003d0.000 n\u003d10+9)\nWordsEncode1e5-8   293MB/s ± 0%   296MB/s ± 1%   +1.03%    (p\u003d0.000 n\u003d8+9)\nWordsEncode1e6-8   345MB/s ± 0%   345MB/s ± 0%     ~       (p\u003d0.332 n\u003d9+8)\nRandomEncode-8    14.4GB/s ± 2%  14.4GB/s ± 2%     ~      (p\u003d1.000 n\u003d10+9)\n_ZFlat0-8          863MB/s ± 0%   888MB/s ± 1%   +2.86%   (p\u003d0.000 n\u003d9+10)\n_ZFlat1-8          471MB/s ± 0%   471MB/s ± 1%     ~      (p\u003d0.897 n\u003d8+10)\n_ZFlat2-8         16.2GB/s ± 2%  16.2GB/s ± 3%     ~     (p\u003d0.631 n\u003d10+10)\n_ZFlat3-8          659MB/s ± 1%   675MB/s ± 1%   +2.32%    (p\u003d0.000 n\u003d9+9)\n_ZFlat4-8         8.29GB/s ± 1%  8.31GB/s ± 1%     ~     (p\u003d0.315 n\u003d10+10)\n_ZFlat5-8          836MB/s ± 1%   850MB/s ± 0%   +1.78%    (p\u003d0.000 n\u003d9+9)\n_ZFlat6-8          315MB/s ± 0%   316MB/s ± 0%   +0.39%   (p\u003d0.002 n\u003d9+10)\n_ZFlat7-8          293MB/s ± 1%   294MB/s ± 1%     ~      (p\u003d0.139 n\u003d10+9)\n_ZFlat8-8          331MB/s ± 1%   330MB/s ± 1%     ~      (p\u003d0.356 n\u003d10+9)\n_ZFlat9-8          273MB/s ± 1%   273MB/s ± 0%     ~     (p\u003d0.280 n\u003d10+10)\n_ZFlat10-8        1.12GB/s ± 1%  1.17GB/s ± 1%   +4.12%  (p\u003d0.000 n\u003d10+10)\n_ZFlat11-8         460MB/s ± 0%   461MB/s ± 0%   +0.34%   (p\u003d0.006 n\u003d8+10)\n"
    },
    {
      "commit": "c3defccc353d53ff7091dba7a646f482bf15dc98",
      "tree": "ff438cadb81dc644c0fe368ed3b622971d7004eb",
      "parents": [
        "598d84db771ebc0ceb3b0bc4ae62c8d09a73c6ba"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 02:54:56 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 02:54:56 2016"
      },
      "message": "Inline the emitCopy call.\n\nname              old speed      new speed      delta\nWordsEncode1e1-8   701MB/s ± 1%   712MB/s ± 1%   +1.64%  (p\u003d0.000 n\u003d10+10)\nWordsEncode1e2-8   429MB/s ± 0%   467MB/s ± 0%   +8.86%    (p\u003d0.000 n\u003d9+9)\nWordsEncode1e3-8   447MB/s ± 0%   483MB/s ± 0%   +8.20%    (p\u003d0.000 n\u003d9+9)\nWordsEncode1e4-8   322MB/s ± 1%   353MB/s ± 1%   +9.76%  (p\u003d0.000 n\u003d10+10)\nWordsEncode1e5-8   268MB/s ± 0%   293MB/s ± 0%   +9.42%    (p\u003d0.000 n\u003d9+8)\nWordsEncode1e6-8   313MB/s ± 0%   345MB/s ± 0%  +10.06%    (p\u003d0.000 n\u003d8+9)\nRandomEncode-8    14.4GB/s ± 1%  14.4GB/s ± 2%     ~      (p\u003d0.829 n\u003d8+10)\n_ZFlat0-8          797MB/s ± 2%   863MB/s ± 0%   +8.39%    (p\u003d0.000 n\u003d9+9)\n_ZFlat1-8          435MB/s ± 1%   471MB/s ± 0%   +8.34%    (p\u003d0.000 n\u003d9+8)\n_ZFlat2-8         16.1GB/s ± 2%  16.2GB/s ± 2%     ~     (p\u003d0.165 n\u003d10+10)\n_ZFlat3-8          633MB/s ± 0%   659MB/s ± 1%   +4.12%   (p\u003d0.000 n\u003d10+9)\n_ZFlat4-8         7.95GB/s ± 1%  8.29GB/s ± 1%   +4.22%  (p\u003d0.000 n\u003d10+10)\n_ZFlat5-8          771MB/s ± 0%   836MB/s ± 1%   +8.33%   (p\u003d0.000 n\u003d10+9)\n_ZFlat6-8          283MB/s ± 0%   315MB/s ± 0%  +11.19%   (p\u003d0.000 n\u003d10+9)\n_ZFlat7-8          265MB/s ± 0%   293MB/s ± 1%  +10.73%   (p\u003d0.000 n\u003d9+10)\n_ZFlat8-8          299MB/s ± 0%   331MB/s ± 1%  +10.74%   (p\u003d0.000 n\u003d9+10)\n_ZFlat9-8          246MB/s ± 1%   273MB/s ± 1%  +10.90%  (p\u003d0.000 n\u003d10+10)\n_ZFlat10-8        1.05GB/s ± 1%  1.12GB/s ± 1%   +7.02%  (p\u003d0.000 n\u003d10+10)\n_ZFlat11-8         411MB/s ± 0%   460MB/s ± 0%  +11.79%   (p\u003d0.000 n\u003d10+8)\n"
    },
    {
      "commit": "598d84db771ebc0ceb3b0bc4ae62c8d09a73c6ba",
      "tree": "8949d58c56ed8f5d3df4318a7eae7368d25fed9d",
      "parents": [
        "9f7b278fd78696f07ce25b6941fd896e50870f40"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 02:00:38 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 02:00:38 2016"
      },
      "message": "Rearrange the emitLiteral register allocation.\n\nThis minimizes the diff in a follow-up commit, when manually inlining.\n\nIt\u0027s not an optimization per se, but for the record:\nname              old speed      new speed      delta\nWordsEncode1e1-8   698MB/s ± 1%   701MB/s ± 1%   ~     (p\u003d0.165 n\u003d10+10)\nWordsEncode1e2-8   428MB/s ± 0%   429MB/s ± 0%   ~       (p\u003d0.489 n\u003d9+9)\nWordsEncode1e3-8   446MB/s ± 0%   447MB/s ± 0%   ~       (p\u003d0.476 n\u003d9+9)\nWordsEncode1e4-8   321MB/s ± 1%   322MB/s ± 1%   ~     (p\u003d0.593 n\u003d10+10)\nWordsEncode1e5-8   267MB/s ± 1%   268MB/s ± 0%   ~       (p\u003d0.287 n\u003d9+9)\nWordsEncode1e6-8   313MB/s ± 1%   313MB/s ± 0%   ~       (p\u003d0.190 n\u003d9+8)\nRandomEncode-8    14.4GB/s ± 1%  14.4GB/s ± 1%   ~       (p\u003d0.673 n\u003d9+8)\n_ZFlat0-8          800MB/s ± 0%   797MB/s ± 2%   ~       (p\u003d0.387 n\u003d9+9)\n_ZFlat1-8          436MB/s ± 1%   435MB/s ± 1%   ~       (p\u003d0.169 n\u003d9+9)\n_ZFlat2-8         16.2GB/s ± 1%  16.1GB/s ± 2%   ~     (p\u003d0.063 n\u003d10+10)\n_ZFlat3-8          633MB/s ± 1%   633MB/s ± 0%   ~      (p\u003d0.661 n\u003d9+10)\n_ZFlat4-8         7.96GB/s ± 1%  7.95GB/s ± 1%   ~     (p\u003d0.796 n\u003d10+10)\n_ZFlat5-8          771MB/s ± 0%   771MB/s ± 0%   ~     (p\u003d0.929 n\u003d10+10)\n_ZFlat6-8          283MB/s ± 1%   283MB/s ± 0%   ~     (p\u003d0.912 n\u003d10+10)\n_ZFlat7-8          265MB/s ± 0%   265MB/s ± 0%   ~       (p\u003d0.649 n\u003d9+9)\n_ZFlat8-8          299MB/s ± 0%   299MB/s ± 0%   ~       (p\u003d0.748 n\u003d9+9)\n_ZFlat9-8          246MB/s ± 1%   246MB/s ± 1%   ~      (p\u003d0.921 n\u003d9+10)\n_ZFlat10-8        1.05GB/s ± 1%  1.05GB/s ± 1%   ~     (p\u003d0.089 n\u003d10+10)\n_ZFlat11-8         410MB/s ± 0%   411MB/s ± 0%   ~     (p\u003d0.190 n\u003d10+10)\n"
    },
    {
      "commit": "9f7b278fd78696f07ce25b6941fd896e50870f40",
      "tree": "d742b34e443272da728531f0498d266b68517b37",
      "parents": [
        "2b29335120440273ce87e777e4d1d511fe7894b8"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 01:22:44 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 01:22:44 2016"
      },
      "message": "Rearrange the emitCopy register allocation.\n\nThis minimizes the diff in a follow-up commit, when manually inlining.\n\nIt\u0027s not an optimization per se, but for the record:\nname              old speed      new speed      delta\nWordsEncode1e1-8   711MB/s ± 1%   700MB/s ± 1%  -1.64%   (p\u003d0.000 n\u003d9+10)\nWordsEncode1e2-8   407MB/s ± 1%   430MB/s ± 0%  +5.57%  (p\u003d0.000 n\u003d10+10)\nWordsEncode1e3-8   441MB/s ± 1%   447MB/s ± 0%  +1.52%    (p\u003d0.000 n\u003d8+8)\nWordsEncode1e4-8   311MB/s ± 1%   322MB/s ± 0%  +3.69%   (p\u003d0.000 n\u003d9+10)\nWordsEncode1e5-8   267MB/s ± 0%   267MB/s ± 1%    ~      (p\u003d0.068 n\u003d8+10)\nWordsEncode1e6-8   312MB/s ± 1%   314MB/s ± 0%  +0.45%   (p\u003d0.000 n\u003d9+10)\nRandomEncode-8    14.4GB/s ± 2%  14.4GB/s ± 2%    ~     (p\u003d0.739 n\u003d10+10)\n_ZFlat0-8          792MB/s ± 1%   801MB/s ± 0%  +1.11%    (p\u003d0.000 n\u003d8+9)\n_ZFlat1-8          435MB/s ± 1%   437MB/s ± 0%    ~      (p\u003d0.857 n\u003d9+10)\n_ZFlat2-8         16.0GB/s ± 4%  16.3GB/s ± 1%    ~     (p\u003d0.143 n\u003d10+10)\n_ZFlat3-8          613MB/s ± 0%   634MB/s ± 0%  +3.54%   (p\u003d0.000 n\u003d8+10)\n_ZFlat4-8         7.96GB/s ± 1%  7.97GB/s ± 1%    ~      (p\u003d0.829 n\u003d8+10)\n_ZFlat5-8          770MB/s ± 0%   773MB/s ± 0%  +0.33%    (p\u003d0.000 n\u003d8+9)\n_ZFlat6-8          283MB/s ± 0%   283MB/s ± 0%  +0.13%    (p\u003d0.043 n\u003d8+9)\n_ZFlat7-8          264MB/s ± 2%   265MB/s ± 0%  +0.61%    (p\u003d0.000 n\u003d9+9)\n_ZFlat8-8          297MB/s ± 3%   299MB/s ± 0%    ~       (p\u003d0.161 n\u003d9+9)\n_ZFlat9-8          247MB/s ± 1%   247MB/s ± 0%    ~       (p\u003d0.465 n\u003d8+9)\n_ZFlat10-8        1.03GB/s ± 0%  1.05GB/s ± 1%  +1.75%    (p\u003d0.000 n\u003d9+9)\n_ZFlat11-8         409MB/s ± 0%   412MB/s ± 0%  +0.64%    (p\u003d0.000 n\u003d8+8)\n"
    },
    {
      "commit": "2b29335120440273ce87e777e4d1d511fe7894b8",
      "tree": "005914b3217d848df5c04d8631f5b3f39209bf55",
      "parents": [
        "6ffc20e64ac443f023f8e1bb056e1ac5bba73ee5"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 01:06:33 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 01:06:33 2016"
      },
      "message": "Run asmfmt.\n"
    },
    {
      "commit": "6ffc20e64ac443f023f8e1bb056e1ac5bba73ee5",
      "tree": "2e5d63ded55e1f415f74eeaa4f30e2c6b8901dc3",
      "parents": [
        "ec642410cd033af63620b66a91ccbd3c69c2c59a"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 00:31:32 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Apr 29 00:31:32 2016"
      },
      "message": "Add more comments for the asm workaround.\n"
    },
    {
      "commit": "ec642410cd033af63620b66a91ccbd3c69c2c59a",
      "tree": "8e6f081e8c9ddb6e6288dde89bf9afc40d2c8a9d",
      "parents": [
        "7dddae14f78fa10091e879948a0ccf67b5acfc68"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 24 00:32:34 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 24 00:32:34 2016"
      },
      "message": "Workaround \"table-32768(SP)(R11*2)\" not assembling.\n\nThis asm phrase works on Go 1.4 and Go tip, but not Go 1.6. I\u0027m not sure\nwhy, but this workaround should make the package installable while I\ninvestigate.\n\nFixes #29.\n"
    },
    {
      "commit": "7dddae14f78fa10091e879948a0ccf67b5acfc68",
      "tree": "d3fb1b7518de13367de1905100f335a5ddde6e64",
      "parents": [
        "2dbf36527785b61dd460e053f008abafbce9380b"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 24 00:07:12 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 24 00:07:12 2016"
      },
      "message": "Fix redeclaration of \"end\" in the asm.\n\nMultiple \"end\" labels, in different functions, did not work with the Go\n1.4 toolchain.\n\nFixes #30.\n"
    },
    {
      "commit": "2dbf36527785b61dd460e053f008abafbce9380b",
      "tree": "d2c7900d5f9ad897e6cd5a770b4677312a1b2f6d",
      "parents": [
        "988ce01844c82a01b918c35840520b91b398049e"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 05:01:47 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 05:01:47 2016"
      },
      "message": "Inline extendMatch for the noasm encoder.\n\nThis is a partial undo of 4f2f9a13 \"Write the encoder\u0027s extendMatch in\nasm\" but we can selectively apply the undo only to the noasm case now\nthat encodeBlock (the function that calls extendMatch) is itself written\nin asm.\n\nWith \"go test -test.bench\u003d\u0027Encode|ZFlat\u0027 -tags\u003dnoasm\":\nname              old speed      new speed      delta\nWordsEncode1e1-8   676MB/s ± 1%   676MB/s ± 0%     ~     (p\u003d0.841 n\u003d5+5)\nWordsEncode1e2-8  85.3MB/s ± 0%  87.5MB/s ± 1%   +2.50%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e3-8   241MB/s ± 0%   258MB/s ± 0%   +7.33%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e4-8   199MB/s ± 0%   245MB/s ± 0%  +23.15%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e5-8   171MB/s ± 0%   186MB/s ± 0%   +8.57%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e6-8   192MB/s ± 0%   211MB/s ± 0%   +9.51%  (p\u003d0.008 n\u003d5+5)\nRandomEncode-8    13.1GB/s ± 2%  13.2GB/s ± 1%     ~     (p\u003d0.690 n\u003d5+5)\n_ZFlat0-8          404MB/s ± 0%   431MB/s ± 0%   +6.84%  (p\u003d0.008 n\u003d5+5)\n_ZFlat1-8          260MB/s ± 0%   277MB/s ± 0%   +6.46%  (p\u003d0.008 n\u003d5+5)\n_ZFlat2-8         13.8GB/s ± 1%  13.8GB/s ± 2%     ~     (p\u003d1.000 n\u003d5+5)\n_ZFlat3-8          170MB/s ± 1%   173MB/s ± 0%   +1.60%  (p\u003d0.008 n\u003d5+5)\n_ZFlat4-8         2.94GB/s ± 5%  3.10GB/s ± 0%   +5.35%  (p\u003d0.008 n\u003d5+5)\n_ZFlat5-8          397MB/s ± 1%   426MB/s ± 0%   +7.32%  (p\u003d0.008 n\u003d5+5)\n_ZFlat6-8          175MB/s ± 2%   190MB/s ± 0%   +8.61%  (p\u003d0.008 n\u003d5+5)\n_ZFlat7-8          169MB/s ± 0%   182MB/s ± 0%   +7.47%  (p\u003d0.016 n\u003d4+5)\n_ZFlat8-8          184MB/s ± 3%   200MB/s ± 0%   +8.65%  (p\u003d0.008 n\u003d5+5)\n_ZFlat9-8          163MB/s ± 0%   175MB/s ± 0%   +7.57%  (p\u003d0.016 n\u003d4+5)\n_ZFlat10-8         481MB/s ± 0%   509MB/s ± 0%   +5.80%  (p\u003d0.016 n\u003d4+5)\n_ZFlat11-8         254MB/s ± 0%   275MB/s ± 0%   +8.32%  (p\u003d0.008 n\u003d5+5)\n\nFor the record, after this commit, the comparison between the noasm\n(\u0027old\u0027) and vanilla (i.e. with asm, \u0027new\u0027) encoder benchmarks, summing\nup the last eight or so commits, is:\nname              old speed      new speed       delta\nWordsEncode1e1-8   676MB/s ± 0%    677MB/s ± 1%      ~     (p\u003d0.310 n\u003d5+5)\nWordsEncode1e2-8  87.5MB/s ± 1%  428.3MB/s ± 0%  +389.71%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e3-8   258MB/s ± 0%    446MB/s ± 1%   +72.67%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e4-8   245MB/s ± 0%    316MB/s ± 0%   +28.94%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e5-8   186MB/s ± 0%    269MB/s ± 0%   +44.86%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e6-8   211MB/s ± 0%    314MB/s ± 1%   +48.84%  (p\u003d0.008 n\u003d5+5)\nRandomEncode-8    13.2GB/s ± 1%   14.4GB/s ± 1%    +9.33%  (p\u003d0.008 n\u003d5+5)\n_ZFlat0-8          431MB/s ± 0%    792MB/s ± 0%   +83.67%  (p\u003d0.008 n\u003d5+5)\n_ZFlat1-8          277MB/s ± 0%    436MB/s ± 1%   +57.46%  (p\u003d0.008 n\u003d5+5)\n_ZFlat2-8         13.8GB/s ± 2%   16.2GB/s ± 1%   +17.16%  (p\u003d0.008 n\u003d5+5)\n_ZFlat3-8          173MB/s ± 0%    632MB/s ± 1%  +265.85%  (p\u003d0.008 n\u003d5+5)\n_ZFlat4-8         3.10GB/s ± 0%   8.00GB/s ± 0%  +157.99%  (p\u003d0.008 n\u003d5+5)\n_ZFlat5-8          426MB/s ± 0%    768MB/s ± 0%   +80.06%  (p\u003d0.008 n\u003d5+5)\n_ZFlat6-8          190MB/s ± 0%    282MB/s ± 1%   +48.48%  (p\u003d0.008 n\u003d5+5)\n_ZFlat7-8          182MB/s ± 0%    264MB/s ± 1%   +44.97%  (p\u003d0.008 n\u003d5+5)\n_ZFlat8-8          200MB/s ± 0%    298MB/s ± 0%   +49.45%  (p\u003d0.008 n\u003d5+5)\n_ZFlat9-8          175MB/s ± 0%    247MB/s ± 0%   +41.02%  (p\u003d0.008 n\u003d5+5)\n_ZFlat10-8         509MB/s ± 0%   1027MB/s ± 0%  +101.72%  (p\u003d0.008 n\u003d5+5)\n_ZFlat11-8         275MB/s ± 0%    411MB/s ± 0%   +49.57%  (p\u003d0.008 n\u003d5+5)\n"
    },
    {
      "commit": "988ce01844c82a01b918c35840520b91b398049e",
      "tree": "8e4de5c8ccd2ed65a3ec08a7638fcbb7c0834a90",
      "parents": [
        "45da9d9c0fa12c1d81bb7dcb799ffe9ca08c8e84"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 04:45:26 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 04:49:49 2016"
      },
      "message": "Add a fast path for short emitLiteral calls.\n\nCompared to the previous commit:\nname              old speed      new speed      delta\nWordsEncode1e1-8   667MB/s ± 0%   677MB/s ± 1%   +1.57%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e2-8   353MB/s ± 1%   428MB/s ± 0%  +21.37%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e3-8   383MB/s ± 1%   446MB/s ± 1%  +16.65%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e4-8   277MB/s ± 1%   316MB/s ± 0%  +13.93%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e5-8   248MB/s ± 0%   269MB/s ± 0%   +8.57%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e6-8   296MB/s ± 0%   314MB/s ± 1%   +6.08%  (p\u003d0.008 n\u003d5+5)\nRandomEncode-8    14.4GB/s ± 2%  14.4GB/s ± 1%     ~     (p\u003d1.000 n\u003d5+5)\n_ZFlat0-8          748MB/s ± 0%   792MB/s ± 0%   +5.87%  (p\u003d0.008 n\u003d5+5)\n_ZFlat1-8          406MB/s ± 0%   436MB/s ± 1%   +7.42%  (p\u003d0.008 n\u003d5+5)\n_ZFlat2-8         16.1GB/s ± 1%  16.2GB/s ± 1%     ~     (p\u003d0.421 n\u003d5+5)\n_ZFlat3-8          604MB/s ± 0%   632MB/s ± 1%   +4.49%  (p\u003d0.008 n\u003d5+5)\n_ZFlat4-8         7.62GB/s ± 1%  8.00GB/s ± 0%   +5.03%  (p\u003d0.008 n\u003d5+5)\n_ZFlat5-8          729MB/s ± 0%   768MB/s ± 0%   +5.26%  (p\u003d0.008 n\u003d5+5)\n_ZFlat6-8          267MB/s ± 0%   282MB/s ± 1%   +5.92%  (p\u003d0.008 n\u003d5+5)\n_ZFlat7-8          248MB/s ± 0%   264MB/s ± 1%   +6.48%  (p\u003d0.008 n\u003d5+5)\n_ZFlat8-8          282MB/s ± 0%   298MB/s ± 0%   +5.87%  (p\u003d0.008 n\u003d5+5)\n_ZFlat9-8          231MB/s ± 0%   247MB/s ± 0%   +6.79%  (p\u003d0.008 n\u003d5+5)\n_ZFlat10-8         972MB/s ± 0%  1027MB/s ± 0%   +5.64%  (p\u003d0.008 n\u003d5+5)\n_ZFlat11-8         401MB/s ± 0%   411MB/s ± 0%   +2.43%  (p\u003d0.008 n\u003d5+5)\n\nThe net effect of the past three commits, when compared to just before\n68801229 \"Write the encoder\u0027s encodeBlock in asm\":\nname              old speed      new speed       delta\nWordsEncode1e1-8   665MB/s ± 0%    677MB/s ± 1%    +1.80%  (p\u003d0.016 n\u003d4+5)\nWordsEncode1e2-8  85.0MB/s ± 0%  428.3MB/s ± 0%  +403.65%  (p\u003d0.016 n\u003d4+5)\nWordsEncode1e3-8   234MB/s ± 2%    446MB/s ± 1%   +90.90%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e4-8   233MB/s ± 0%    316MB/s ± 0%   +35.22%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e5-8   214MB/s ± 1%    269MB/s ± 0%   +25.45%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e6-8   258MB/s ± 0%    314MB/s ± 1%   +21.82%  (p\u003d0.008 n\u003d5+5)\nRandomEncode-8    13.1GB/s ± 1%   14.4GB/s ± 1%   +10.31%  (p\u003d0.008 n\u003d5+5)\n_ZFlat0-8          630MB/s ± 0%    792MB/s ± 0%   +25.71%  (p\u003d0.016 n\u003d4+5)\n_ZFlat1-8          326MB/s ± 0%    436MB/s ± 1%   +33.89%  (p\u003d0.016 n\u003d4+5)\n_ZFlat2-8         13.9GB/s ± 1%   16.2GB/s ± 1%   +16.27%  (p\u003d0.008 n\u003d5+5)\n_ZFlat3-8          177MB/s ± 1%    632MB/s ± 1%  +257.58%  (p\u003d0.008 n\u003d5+5)\n_ZFlat4-8         6.19GB/s ± 1%   8.00GB/s ± 0%   +29.32%  (p\u003d0.008 n\u003d5+5)\n_ZFlat5-8          615MB/s ± 0%    768MB/s ± 0%   +24.91%  (p\u003d0.008 n\u003d5+5)\n_ZFlat6-8          231MB/s ± 0%    282MB/s ± 1%   +21.95%  (p\u003d0.008 n\u003d5+5)\n_ZFlat7-8          215MB/s ± 1%    264MB/s ± 1%   +22.83%  (p\u003d0.008 n\u003d5+5)\n_ZFlat8-8          246MB/s ± 0%    298MB/s ± 0%   +21.46%  (p\u003d0.008 n\u003d5+5)\n_ZFlat9-8          202MB/s ± 0%    247MB/s ± 0%   +22.17%  (p\u003d0.008 n\u003d5+5)\n_ZFlat10-8         803MB/s ± 0%   1027MB/s ± 0%   +27.93%  (p\u003d0.008 n\u003d5+5)\n_ZFlat11-8         351MB/s ± 0%    411MB/s ± 0%   +16.92%  (p\u003d0.008 n\u003d5+5)\n"
    },
    {
      "commit": "45da9d9c0fa12c1d81bb7dcb799ffe9ca08c8e84",
      "tree": "4184ca7ca9ab311fbc176ad717cae53ecc353301",
      "parents": [
        "68801229512d42e123097d5e505e89ea3f4397cc"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 04:31:57 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 04:31:57 2016"
      },
      "message": "Zero out only that part of the hash table in use.\n\nObviously, the biggest gains are for the smallest inputs.\n\nThe WordsEncode1e1-8 benchmark should be unaffected (except possibly by\nnoise) because it never calls into encodeBlock.\n\nname              old speed      new speed       delta\nWordsEncode1e1-8   678MB/s ± 0%    667MB/s ± 0%    -1.74%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e2-8  90.1MB/s ± 0%  352.9MB/s ± 1%  +291.85%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e3-8   295MB/s ± 0%    383MB/s ± 1%   +29.67%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e4-8   276MB/s ± 0%    277MB/s ± 1%      ~     (p\u003d0.310 n\u003d5+5)\nWordsEncode1e5-8   248MB/s ± 0%    248MB/s ± 0%      ~     (p\u003d0.841 n\u003d5+5)\nWordsEncode1e6-8   295MB/s ± 0%    296MB/s ± 0%      ~     (p\u003d0.548 n\u003d5+5)\nRandomEncode-8    14.4GB/s ± 1%   14.4GB/s ± 2%      ~     (p\u003d1.000 n\u003d5+5)\n_ZFlat0-8          749MB/s ± 0%    748MB/s ± 0%      ~     (p\u003d0.151 n\u003d5+5)\n_ZFlat1-8          405MB/s ± 0%    406MB/s ± 0%    +0.18%  (p\u003d0.032 n\u003d4+5)\n_ZFlat2-8         16.2GB/s ± 1%   16.1GB/s ± 1%      ~     (p\u003d0.421 n\u003d5+5)\n_ZFlat3-8          202MB/s ± 1%    604MB/s ± 0%  +198.86%  (p\u003d0.008 n\u003d5+5)\n_ZFlat4-8         7.59GB/s ± 1%   7.62GB/s ± 1%      ~     (p\u003d0.548 n\u003d5+5)\n_ZFlat5-8          728MB/s ± 1%    729MB/s ± 0%      ~     (p\u003d0.548 n\u003d5+5)\n_ZFlat6-8          266MB/s ± 1%    267MB/s ± 0%      ~     (p\u003d0.548 n\u003d5+5)\n_ZFlat7-8          248MB/s ± 0%    248MB/s ± 0%      ~     (p\u003d0.881 n\u003d5+5)\n_ZFlat8-8          282MB/s ± 0%    282MB/s ± 0%      ~     (p\u003d0.556 n\u003d4+5)\n_ZFlat9-8          231MB/s ± 0%    231MB/s ± 0%    +0.23%  (p\u003d0.032 n\u003d5+5)\n_ZFlat10-8         970MB/s ± 0%    972MB/s ± 0%      ~     (p\u003d0.421 n\u003d5+5)\n_ZFlat11-8         402MB/s ± 0%    401MB/s ± 0%      ~     (p\u003d0.730 n\u003d5+5)\n"
    },
    {
      "commit": "68801229512d42e123097d5e505e89ea3f4397cc",
      "tree": "37cc53df6d1cdb9b50370e48359a0336aca760aa",
      "parents": [
        "17e435849f9b5cc7818817bb6e1d5c002f486fef"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 04:21:06 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 04:21:06 2016"
      },
      "message": "Write the encoder\u0027s encodeBlock in asm.\n\nname              old speed      new speed      delta\nWordsEncode1e1-8   665MB/s ± 0%   678MB/s ± 0%   +2.00%  (p\u003d0.016 n\u003d4+5)\nWordsEncode1e2-8  85.0MB/s ± 0%  90.1MB/s ± 0%   +5.90%  (p\u003d0.016 n\u003d4+5)\nWordsEncode1e3-8   234MB/s ± 2%   295MB/s ± 0%  +26.20%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e4-8   233MB/s ± 0%   276MB/s ± 0%  +18.31%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e5-8   214MB/s ± 1%   248MB/s ± 0%  +15.52%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e6-8   258MB/s ± 0%   295MB/s ± 0%  +14.62%  (p\u003d0.008 n\u003d5+5)\nRandomEncode-8    13.1GB/s ± 1%  14.4GB/s ± 1%  +10.27%  (p\u003d0.008 n\u003d5+5)\n_ZFlat0-8          630MB/s ± 0%   749MB/s ± 0%  +18.96%  (p\u003d0.016 n\u003d4+5)\n_ZFlat1-8          326MB/s ± 0%   405MB/s ± 0%  +24.41%  (p\u003d0.029 n\u003d4+4)\n_ZFlat2-8         13.9GB/s ± 1%  16.2GB/s ± 1%  +16.04%  (p\u003d0.008 n\u003d5+5)\n_ZFlat3-8          177MB/s ± 1%   202MB/s ± 1%  +14.51%  (p\u003d0.008 n\u003d5+5)\n_ZFlat4-8         6.19GB/s ± 1%  7.59GB/s ± 1%  +22.64%  (p\u003d0.008 n\u003d5+5)\n_ZFlat5-8          615MB/s ± 0%   728MB/s ± 1%  +18.45%  (p\u003d0.008 n\u003d5+5)\n_ZFlat6-8          231MB/s ± 0%   266MB/s ± 1%  +15.00%  (p\u003d0.008 n\u003d5+5)\n_ZFlat7-8          215MB/s ± 1%   248MB/s ± 0%  +15.30%  (p\u003d0.008 n\u003d5+5)\n_ZFlat8-8          246MB/s ± 0%   282MB/s ± 0%  +14.73%  (p\u003d0.016 n\u003d5+4)\n_ZFlat9-8          202MB/s ± 0%   231MB/s ± 0%  +14.13%  (p\u003d0.008 n\u003d5+5)\n_ZFlat10-8         803MB/s ± 0%   970MB/s ± 0%  +20.90%  (p\u003d0.008 n\u003d5+5)\n_ZFlat11-8         351MB/s ± 0%   402MB/s ± 0%  +14.29%  (p\u003d0.008 n\u003d5+5)\n"
    },
    {
      "commit": "17e435849f9b5cc7818817bb6e1d5c002f486fef",
      "tree": "47b5f1962e5ffd85b7e4013cfa2aeb6654094a24",
      "parents": [
        "0c43e98dfe3f41a99362fa041990a047da508eee"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 02:27:13 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 02:28:42 2016"
      },
      "message": "Restrict the scope of the tableSize variable.\n\nIt\u0027s really just a style change, not an optimization, but for the\nrecord, the numbers don\u0027t show a strong change either way, and could\neasily just be noise.\n\nname              old speed      new speed      delta\nWordsEncode1e1-8   667MB/s ± 0%   665MB/s ± 0%    ~     (p\u003d0.190 n\u003d5+4)\nWordsEncode1e2-8  85.1MB/s ± 0%  85.0MB/s ± 0%    ~     (p\u003d0.556 n\u003d5+4)\nWordsEncode1e3-8   235MB/s ± 0%   234MB/s ± 2%    ~     (p\u003d0.690 n\u003d5+5)\nWordsEncode1e4-8   234MB/s ± 0%   233MB/s ± 0%    ~     (p\u003d0.151 n\u003d5+5)\nWordsEncode1e5-8   216MB/s ± 0%   214MB/s ± 1%  -0.61%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e6-8   258MB/s ± 0%   258MB/s ± 0%  -0.29%  (p\u003d0.024 n\u003d5+5)\nRandomEncode-8    13.2GB/s ± 1%  13.1GB/s ± 1%    ~     (p\u003d0.056 n\u003d5+5)\n_ZFlat0-8          629MB/s ± 0%   630MB/s ± 0%    ~     (p\u003d0.111 n\u003d5+4)\n_ZFlat1-8          325MB/s ± 0%   326MB/s ± 0%  +0.27%  (p\u003d0.016 n\u003d5+4)\n_ZFlat2-8         13.7GB/s ± 5%  13.9GB/s ± 1%    ~     (p\u003d0.310 n\u003d5+5)\n_ZFlat3-8          177MB/s ± 0%   177MB/s ± 1%    ~     (p\u003d0.690 n\u003d5+5)\n_ZFlat4-8         6.15GB/s ± 2%  6.19GB/s ± 1%    ~     (p\u003d0.222 n\u003d5+5)\n_ZFlat5-8          614MB/s ± 0%   615MB/s ± 0%    ~     (p\u003d0.310 n\u003d5+5)\n_ZFlat6-8          231MB/s ± 2%   231MB/s ± 0%    ~     (p\u003d0.690 n\u003d5+5)\n_ZFlat7-8          215MB/s ± 2%   215MB/s ± 1%    ~     (p\u003d0.222 n\u003d5+5)\n_ZFlat8-8          246MB/s ± 0%   246MB/s ± 0%    ~     (p\u003d0.190 n\u003d4+5)\n_ZFlat9-8          202MB/s ± 0%   202MB/s ± 0%    ~     (p\u003d0.683 n\u003d4+5)\n_ZFlat10-8         794MB/s ± 2%   803MB/s ± 0%  +1.13%  (p\u003d0.008 n\u003d5+5)\n_ZFlat11-8         350MB/s ± 0%   351MB/s ± 0%  +0.25%  (p\u003d0.032 n\u003d4+5)\n"
    },
    {
      "commit": "0c43e98dfe3f41a99362fa041990a047da508eee",
      "tree": "86464617753d99aff159a62779c3ec55d283e753",
      "parents": [
        "62bb72da9a2bbb2139731f3da2659852bd15df18"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 02:17:41 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 02:17:41 2016"
      },
      "message": "Add comment that dst and src must not overlap.\n"
    },
    {
      "commit": "62bb72da9a2bbb2139731f3da2659852bd15df18",
      "tree": "3d6378ba6b9baf19c7def0803b28587eb61ddc60",
      "parents": [
        "d8211ff0ee1575ab421cd4b9504bfe1d7c7d7f76"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 02:05:56 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 02:05:56 2016"
      },
      "message": "Write the encoder\u0027s emitLiteral in asm.\n\nname              old speed      new speed      delta\nWordsEncode1e1-8   665MB/s ± 0%   667MB/s ± 0%  +0.35%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e2-8  83.8MB/s ± 1%  85.1MB/s ± 0%  +1.47%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e3-8   231MB/s ± 1%   235MB/s ± 0%  +1.81%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e4-8   232MB/s ± 1%   234MB/s ± 0%  +0.78%  (p\u003d0.016 n\u003d5+5)\nWordsEncode1e5-8   212MB/s ± 1%   216MB/s ± 0%  +1.55%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e6-8   257MB/s ± 0%   258MB/s ± 0%  +0.68%  (p\u003d0.008 n\u003d5+5)\nRandomEncode-8    13.2GB/s ± 1%  13.2GB/s ± 1%    ~     (p\u003d0.548 n\u003d5+5)\n_ZFlat0-8          629MB/s ± 0%   629MB/s ± 0%    ~     (p\u003d0.690 n\u003d5+5)\n_ZFlat1-8          324MB/s ± 0%   325MB/s ± 0%    ~     (p\u003d0.222 n\u003d5+5)\n_ZFlat2-8         13.9GB/s ± 1%  13.7GB/s ± 5%    ~     (p\u003d0.310 n\u003d5+5)\n_ZFlat3-8          176MB/s ± 1%   177MB/s ± 0%    ~     (p\u003d0.548 n\u003d5+5)\n_ZFlat4-8         6.12GB/s ± 0%  6.15GB/s ± 2%    ~     (p\u003d0.151 n\u003d5+5)\n_ZFlat5-8          614MB/s ± 0%   614MB/s ± 0%    ~     (p\u003d0.548 n\u003d5+5)\n_ZFlat6-8          230MB/s ± 0%   231MB/s ± 2%    ~     (p\u003d0.151 n\u003d5+5)\n_ZFlat7-8          214MB/s ± 0%   215MB/s ± 2%    ~     (p\u003d0.151 n\u003d5+5)\n_ZFlat8-8          244MB/s ± 0%   246MB/s ± 0%  +0.71%  (p\u003d0.016 n\u003d5+4)\n_ZFlat9-8          200MB/s ± 0%   202MB/s ± 0%  +0.95%  (p\u003d0.016 n\u003d5+4)\n_ZFlat10-8         797MB/s ± 0%   794MB/s ± 2%    ~     (p\u003d1.000 n\u003d5+5)\n_ZFlat11-8         351MB/s ± 1%   350MB/s ± 0%    ~     (p\u003d0.730 n\u003d5+4)\n"
    },
    {
      "commit": "d8211ff0ee1575ab421cd4b9504bfe1d7c7d7f76",
      "tree": "56f1b4b8c0c20cb65ddff5530ac36fb0ba5e56b9",
      "parents": [
        "4f2f9a13dd7ed6975c4470af560e8ff2f93b127d"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 01:44:23 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 01:48:21 2016"
      },
      "message": "Write the encoder\u0027s emitCopy in asm.\n\nname              old speed      new speed      delta\nWordsEncode1e1-8   690MB/s ± 0%   665MB/s ± 0%  -3.64%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e2-8  83.7MB/s ± 1%  83.8MB/s ± 1%    ~     (p\u003d0.421 n\u003d5+5)\nWordsEncode1e3-8   230MB/s ± 1%   231MB/s ± 1%    ~     (p\u003d0.421 n\u003d5+5)\nWordsEncode1e4-8   233MB/s ± 1%   232MB/s ± 1%    ~     (p\u003d0.151 n\u003d5+5)\nWordsEncode1e5-8   212MB/s ± 0%   212MB/s ± 1%    ~     (p\u003d1.000 n\u003d5+5)\nWordsEncode1e6-8   255MB/s ± 0%   257MB/s ± 0%  +0.57%  (p\u003d0.008 n\u003d5+5)\nRandomEncode-8    13.2GB/s ± 1%  13.2GB/s ± 1%    ~     (p\u003d0.151 n\u003d5+5)\n_ZFlat0-8          623MB/s ± 0%   629MB/s ± 0%  +0.93%  (p\u003d0.008 n\u003d5+5)\n_ZFlat1-8          319MB/s ± 1%   324MB/s ± 0%  +1.65%  (p\u003d0.008 n\u003d5+5)\n_ZFlat2-8         13.9GB/s ± 1%  13.9GB/s ± 1%    ~     (p\u003d0.548 n\u003d5+5)\n_ZFlat3-8          176MB/s ± 0%   176MB/s ± 1%    ~     (p\u003d0.690 n\u003d5+5)\n_ZFlat4-8         6.05GB/s ± 0%  6.12GB/s ± 0%  +1.20%  (p\u003d0.008 n\u003d5+5)\n_ZFlat5-8          603MB/s ± 0%   614MB/s ± 0%  +1.71%  (p\u003d0.008 n\u003d5+5)\n_ZFlat6-8          228MB/s ± 0%   230MB/s ± 0%  +0.83%  (p\u003d0.008 n\u003d5+5)\n_ZFlat7-8          212MB/s ± 0%   214MB/s ± 0%  +0.74%  (p\u003d0.008 n\u003d5+5)\n_ZFlat8-8          242MB/s ± 0%   244MB/s ± 0%  +0.99%  (p\u003d0.008 n\u003d5+5)\n_ZFlat9-8          199MB/s ± 1%   200MB/s ± 0%  +0.57%  (p\u003d0.008 n\u003d5+5)\n_ZFlat10-8         796MB/s ± 1%   797MB/s ± 0%    ~     (p\u003d1.000 n\u003d5+5)\n_ZFlat11-8         348MB/s ± 0%   351MB/s ± 1%    ~     (p\u003d0.056 n\u003d5+5)\n\nI\u0027m not overly worried about the WordsEncode1e1-8 change: the time/op is\naround 15 nanoseconds, which is tiny. In comparison, _ZFlat0-8 takes\naround 163 microseconds (note µs not ns).\n"
    },
    {
      "commit": "4f2f9a13dd7ed6975c4470af560e8ff2f93b127d",
      "tree": "5bd7b975e0f494658817adf743ac6a6286524252",
      "parents": [
        "1f4d362d6d1f2f31bf10a5a7075f021dea6a225d"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 01:26:04 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 01:26:04 2016"
      },
      "message": "Write the encoder\u0027s extendMatch in asm.\n\nname              old speed      new speed      delta\nWordsEncode1e1-8   678MB/s ± 0%   690MB/s ± 0%   +1.79%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e2-8  87.5MB/s ± 0%  83.7MB/s ± 1%   -4.26%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e3-8   257MB/s ± 1%   230MB/s ± 1%  -10.41%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e4-8   247MB/s ± 1%   233MB/s ± 1%   -5.56%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e5-8   186MB/s ± 0%   212MB/s ± 0%  +14.36%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e6-8   211MB/s ± 0%   255MB/s ± 0%  +20.82%  (p\u003d0.008 n\u003d5+5)\nRandomEncode-8    13.1GB/s ± 2%  13.2GB/s ± 1%     ~     (p\u003d0.222 n\u003d5+5)\n_ZFlat0-8          433MB/s ± 0%   623MB/s ± 0%  +43.92%  (p\u003d0.008 n\u003d5+5)\n_ZFlat1-8          276MB/s ± 0%   319MB/s ± 1%  +15.42%  (p\u003d0.008 n\u003d5+5)\n_ZFlat2-8         13.8GB/s ± 1%  13.9GB/s ± 1%     ~     (p\u003d0.222 n\u003d5+5)\n_ZFlat3-8          170MB/s ± 0%   176MB/s ± 0%   +3.55%  (p\u003d0.008 n\u003d5+5)\n_ZFlat4-8         3.09GB/s ± 1%  6.05GB/s ± 0%  +96.00%  (p\u003d0.008 n\u003d5+5)\n_ZFlat5-8          427MB/s ± 1%   603MB/s ± 0%  +41.35%  (p\u003d0.008 n\u003d5+5)\n_ZFlat6-8          190MB/s ± 0%   228MB/s ± 0%  +20.24%  (p\u003d0.008 n\u003d5+5)\n_ZFlat7-8          182MB/s ± 0%   212MB/s ± 0%  +16.87%  (p\u003d0.008 n\u003d5+5)\n_ZFlat8-8          200MB/s ± 0%   242MB/s ± 0%  +20.97%  (p\u003d0.008 n\u003d5+5)\n_ZFlat9-8          175MB/s ± 0%   199MB/s ± 1%  +13.74%  (p\u003d0.008 n\u003d5+5)\n_ZFlat10-8         507MB/s ± 0%   796MB/s ± 1%  +56.83%  (p\u003d0.008 n\u003d5+5)\n_ZFlat11-8         278MB/s ± 0%   348MB/s ± 0%  +25.09%  (p\u003d0.008 n\u003d5+5)\n\nname           old time/op  new time/op  delta\nExtendMatch-8  16.5µs ± 1%   7.8µs ± 1%  -52.93%  (p\u003d0.008 n\u003d5+5)\n"
    },
    {
      "commit": "1f4d362d6d1f2f31bf10a5a7075f021dea6a225d",
      "tree": "be5b2d1e5a2d3fd2729ef1de67eda087974e4e93",
      "parents": [
        "bd94318f58a5b6f6c8af0f67bb1788c8d2d530a3"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 00:40:18 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 00:40:18 2016"
      },
      "message": "Clarify the emitLiteral and emitCopy preconditions.\n\nThis allows deleting some redundant code.\n\nname              old speed      new speed      delta\nWordsEncode1e1-8   679MB/s ± 0%   678MB/s ± 0%    ~     (p\u003d0.087 n\u003d5+5)\nWordsEncode1e2-8  87.5MB/s ± 0%  87.5MB/s ± 0%    ~     (p\u003d0.579 n\u003d5+5)\nWordsEncode1e3-8   258MB/s ± 0%   257MB/s ± 1%    ~     (p\u003d1.000 n\u003d5+5)\nWordsEncode1e4-8   243MB/s ± 0%   247MB/s ± 1%  +1.77%  (p\u003d0.008 n\u003d5+5)\nWordsEncode1e5-8   185MB/s ± 1%   186MB/s ± 0%    ~     (p\u003d0.095 n\u003d5+5)\nWordsEncode1e6-8   210MB/s ± 2%   211MB/s ± 0%    ~     (p\u003d0.222 n\u003d5+5)\nRandomEncode-8    13.2GB/s ± 1%  13.1GB/s ± 2%    ~     (p\u003d0.286 n\u003d4+5)\n_ZFlat0-8          429MB/s ± 0%   433MB/s ± 0%  +0.83%  (p\u003d0.016 n\u003d4+5)\n_ZFlat1-8          274MB/s ± 0%   276MB/s ± 0%  +0.91%  (p\u003d0.016 n\u003d4+5)\n_ZFlat2-8         13.6GB/s ± 2%  13.8GB/s ± 1%    ~     (p\u003d0.095 n\u003d5+5)\n_ZFlat3-8          169MB/s ± 0%   170MB/s ± 0%  +0.38%  (p\u003d0.032 n\u003d4+5)\n_ZFlat4-8         3.09GB/s ± 0%  3.09GB/s ± 1%    ~     (p\u003d0.905 n\u003d4+5)\n_ZFlat5-8          419MB/s ± 5%   427MB/s ± 1%  +1.83%  (p\u003d0.032 n\u003d5+5)\n_ZFlat6-8          189MB/s ± 1%   190MB/s ± 0%  +0.68%  (p\u003d0.016 n\u003d4+5)\n_ZFlat7-8          181MB/s ± 1%   182MB/s ± 0%  +0.60%  (p\u003d0.008 n\u003d5+5)\n_ZFlat8-8          199MB/s ± 1%   200MB/s ± 0%  +0.68%  (p\u003d0.008 n\u003d5+5)\n_ZFlat9-8          175MB/s ± 0%   175MB/s ± 0%    ~     (p\u003d0.095 n\u003d5+5)\n_ZFlat10-8         507MB/s ± 0%   507MB/s ± 0%    ~     (p\u003d0.222 n\u003d5+5)\n_ZFlat11-8         277MB/s ± 0%   278MB/s ± 0%  +0.38%  (p\u003d0.008 n\u003d5+5)\n"
    },
    {
      "commit": "bd94318f58a5b6f6c8af0f67bb1788c8d2d530a3",
      "tree": "4cb3880b6b610fd333252df9392fac21112555ee",
      "parents": [
        "774a97396f7bfa4165e9dcf4bfa0747ea3edcc02"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 00:29:32 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 23 00:29:32 2016"
      },
      "message": "Add some more encoder tests.\n"
    },
    {
      "commit": "774a97396f7bfa4165e9dcf4bfa0747ea3edcc02",
      "tree": "0418f0fbf6e610922e22b445218080e111b1e801",
      "parents": [
        "3588d1dd84953d8f7effbfbde1fe352cfdf13c65"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 16 05:15:34 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 16 05:15:34 2016"
      },
      "message": "Remove the no-longer-used maxOffset constant.\n\nIt was no longer used as of commit 8939696c \"Use the same encoding\nalgorithm as C++ snappy\".\n"
    },
    {
      "commit": "3588d1dd84953d8f7effbfbde1fe352cfdf13c65",
      "tree": "754387c739e838672c9e2840b3018f030a42e536",
      "parents": [
        "fa0b0e6289e9a08f133cb431fc5fca8e2265767c"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Apr 14 08:47:10 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Apr 14 08:47:10 2016"
      },
      "message": "Add appengine and noasm build tags.\n\nThe general suggestion to use a noasm tag is by Klaus Post at\nhttps://groups.google.com/d/msg/golang-dev/CeKX81B3WdQ/2mq-eY0VAgAJ\n"
    },
    {
      "commit": "fa0b0e6289e9a08f133cb431fc5fca8e2265767c",
      "tree": "74f69baf306c34e675b296a515054e27bf00d157",
      "parents": [
        "ef80b33e873821cff33038ae16c444717218cdb1"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Apr 12 00:37:28 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Apr 12 00:37:28 2016"
      },
      "message": "Eliminate some bounds checks.\n\nIt seems like a small win:\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsEncode1e1-4     465.69       471.77       1.01x\nBenchmarkWordsEncode1e2-4     60.18        60.27        1.00x\nBenchmarkWordsEncode1e3-4     174.42       176.26       1.01x\nBenchmarkWordsEncode1e4-4     172.40       175.95       1.02x\nBenchmarkWordsEncode1e5-4     134.42       134.86       1.00x\nBenchmarkWordsEncode1e6-4     153.09       154.03       1.01x\nBenchmarkRandomEncode-4       6504.88      6553.55      1.01x\nBenchmark_ZFlat0-4            310.55       313.22       1.01x\nBenchmark_ZFlat1-4            198.43       199.73       1.01x\nBenchmark_ZFlat2-4            7915.02      8052.65      1.02x\nBenchmark_ZFlat3-4            123.07       123.53       1.00x\nBenchmark_ZFlat4-4            2220.35      2230.80      1.00x\nBenchmark_ZFlat5-4            307.05       309.51       1.01x\nBenchmark_ZFlat6-4            136.35       137.19       1.01x\nBenchmark_ZFlat7-4            130.67       131.33       1.01x\nBenchmark_ZFlat8-4            143.17       144.47       1.01x\nBenchmark_ZFlat9-4            125.40       125.85       1.00x\nBenchmark_ZFlat10-4           364.30       370.35       1.02x\nBenchmark_ZFlat11-4           200.04       199.80       1.00x\n"
    },
    {
      "commit": "ef80b33e873821cff33038ae16c444717218cdb1",
      "tree": "721984412cce58dfa1ce59896c80f23ce36b2614",
      "parents": [
        "70f093abd7c11f120162d8f77684deadbe37bbf2"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Mon Apr 11 02:06:28 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Mon Apr 11 02:06:28 2016"
      },
      "message": "Change the encoder\u0027s hash table values from int32 to uint16.\n\nDoing s/int32/uint16/ in \"var table [maxTableSize]int32\" saves 32 KiB of stack\nspace that needed zero\u0027ing. maxTableSize is 1\u003c\u003c14, or 16384.\n\nWe couldn\u0027t do this before, in commit cc71ae7c, since we didn\u0027t have\nmaxBlockSize \u003d 65536 at the time.\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsEncode1e1-4     468.81       465.82       0.99x\nBenchmarkWordsEncode1e2-4     32.62        60.23        1.85x\nBenchmarkWordsEncode1e3-4     138.36       174.61       1.26x\nBenchmarkWordsEncode1e4-4     170.79       172.43       1.01x\nBenchmarkWordsEncode1e5-4     131.02       134.25       1.02x\nBenchmarkWordsEncode1e6-4     149.33       153.05       1.02x\nBenchmarkRandomEncode-4       5933.57      6846.03      1.15x\nBenchmark_ZFlat0-4            306.98       310.74       1.01x\nBenchmark_ZFlat1-4            194.65       198.74       1.02x\nBenchmark_ZFlat2-4            6784.51      8110.98      1.20x\nBenchmark_ZFlat3-4            64.06        123.43       1.93x\nBenchmark_ZFlat4-4            2102.05      2224.84      1.06x\nBenchmark_ZFlat5-4            303.89       307.19       1.01x\nBenchmark_ZFlat6-4            132.74       136.37       1.03x\nBenchmark_ZFlat7-4            126.50       130.72       1.03x\nBenchmark_ZFlat8-4            140.35       143.61       1.02x\nBenchmark_ZFlat9-4            121.73       125.62       1.03x\nBenchmark_ZFlat10-4           360.89       365.62       1.01x\nBenchmark_ZFlat11-4           195.92       199.96       1.02x\n"
    },
    {
      "commit": "70f093abd7c11f120162d8f77684deadbe37bbf2",
      "tree": "f681f2df1ecb3d22021aa210e9a6fb8066f8c7f1",
      "parents": [
        "9bc0b5ad10791df6db28196b243094a7694ef806"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 10 06:29:43 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 10 06:29:43 2016"
      },
      "message": "Use a more compressible golden input for the tests.\n\nThe testdata/Mark.Twain-Tom.Sawyer.txt file is the first chapter of the\nsrc/compress/testdata/Mark.Twain-Tom.Sawyer.txt file in the Go repo.\n\nThe rawsnappy version was generated by cmd/snappytool in this repo,\nusing the C++ snappy library as of commit d53de187 (2016-04-05).\n"
    },
    {
      "commit": "9bc0b5ad10791df6db28196b243094a7694ef806",
      "tree": "4a40a1f3f22a84490b5c8e0ca67f5f6f55502aa1",
      "parents": [
        "cef980a12b316c5b7e5bb3a8e168eb43ae999a88"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 10 06:02:28 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 10 06:02:28 2016"
      },
      "message": "Make heuristic match skipping more aggressive.\n\nThis is the Go equivalent of an algorithmic change in the C++ snappy\ncode:\nhttps://github.com/google/snappy/commit/d53de18799418e113e44444252a39b12a0e4e0cc\n\nThe discussion is at:\nhttps://groups.google.com/d/topic/snappy-compression/3Qa3fASLkNA/discussion\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsEncode1e1-8     680.57       679.12       1.00x\nBenchmarkWordsEncode1e2-8     49.90        49.65        0.99x\nBenchmarkWordsEncode1e3-8     213.28       212.75       1.00x\nBenchmarkWordsEncode1e4-8     247.05       245.76       0.99x\nBenchmarkWordsEncode1e5-8     180.68       179.95       1.00x\nBenchmarkWordsEncode1e6-8     205.65       204.83       1.00x\nBenchmarkRandomEncode-8       5678.83      11217.33     1.98x\nBenchmark_ZFlat0-8            422.83       423.18       1.00x\nBenchmark_ZFlat1-8            269.60       271.01       1.01x\nBenchmark_ZFlat2-8            5517.16      11517.40     2.09x\nBenchmark_ZFlat3-8            92.47        92.39        1.00x\nBenchmark_ZFlat4-8            954.63       2947.73      3.09x\nBenchmark_ZFlat5-8            419.71       419.87       1.00x\nBenchmark_ZFlat6-8            184.13       183.45       1.00x\nBenchmark_ZFlat7-8            175.83       175.89       1.00x\nBenchmark_ZFlat8-8            193.49       193.84       1.00x\nBenchmark_ZFlat9-8            169.02       168.59       1.00x\nBenchmark_ZFlat10-8           500.19       499.85       1.00x\nBenchmark_ZFlat11-8           271.20       270.60       1.00x\n"
    },
    {
      "commit": "cef980a12b316c5b7e5bb3a8e168eb43ae999a88",
      "tree": "6617cf3fd72b6f3d4eb648ed646eeee1cbb01b17",
      "parents": [
        "6218a584d0b00caa84f10acfb2eeb5e043b80706"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Apr 07 05:15:05 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Apr 07 05:15:05 2016"
      },
      "message": "Add more commentary to minNonLiteralBlockSize.\n"
    },
    {
      "commit": "6218a584d0b00caa84f10acfb2eeb5e043b80706",
      "tree": "9c3bc10902a3c4a51031847642af1cdafc9ae2a5",
      "parents": [
        "a2aa89c177511a0881193da2623539494a961109"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Apr 07 05:09:02 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Apr 07 05:09:02 2016"
      },
      "message": "Clarify the semantics of minNonLiteralBlockSize.\n"
    },
    {
      "commit": "a2aa89c177511a0881193da2623539494a961109",
      "tree": "b3e86a90867adf8e027996ad57afba7aeee9c12d",
      "parents": [
        "857ad66e003f466b64f9055849bab122efd4c87a"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Apr 07 04:50:07 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Apr 07 04:50:07 2016"
      },
      "message": "Add a TestSameEncodingAsCppShortCopies test.\n"
    },
    {
      "commit": "857ad66e003f466b64f9055849bab122efd4c87a",
      "tree": "b6561941062908e4fc2ba829ee2b74c4c954f067",
      "parents": [
        "3675542200b9752da8f113251b47f0d5b372f414"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Mon Apr 04 00:05:40 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Mon Apr 04 00:05:40 2016"
      },
      "message": "Add gc build tag for the asm code.\n\nFixes #27.\n"
    },
    {
      "commit": "3675542200b9752da8f113251b47f0d5b372f414",
      "tree": "06c76dd1c7be87aad5943014bf45da4db384b7ff",
      "parents": [
        "0e8b256be2776b48cc0a2a11e5ae228f57471078"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 03 13:08:03 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 03 13:08:03 2016"
      },
      "message": "Don\u0027t allow EOF in the middle of a framing chunk.\n"
    },
    {
      "commit": "0e8b256be2776b48cc0a2a11e5ae228f57471078",
      "tree": "c2329452e6f023284e00171fe2819c78e60a4ace",
      "parents": [
        "aca045a2df1eccb72d28abc3066fd19a8fe57a14"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 03 12:40:17 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 03 12:40:17 2016"
      },
      "message": "Fix a too-long uncompressed frame chunk causing a panic.\n\nIt should return an error instead.\n\nFixes #26.\n"
    },
    {
      "commit": "aca045a2df1eccb72d28abc3066fd19a8fe57a14",
      "tree": "13be98d1ce61db0fe2943d3b96f9979363691460",
      "parents": [
        "8939696c2214cde5dda896a76f5bf56e80a16855"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 03 10:56:43 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 03 10:56:43 2016"
      },
      "message": "Clarify when goEncoderShouldMatchCppEncoder.\n"
    },
    {
      "commit": "8939696c2214cde5dda896a76f5bf56e80a16855",
      "tree": "9a707e11a9a60adc1614203ace38e099a2c20cd6",
      "parents": [
        "ebebc717213d6f16fd33dd6a2f74e776af6493c3"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 03 01:18:01 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Apr 03 01:18:01 2016"
      },
      "message": "Use the same encoding algorithm as C++ snappy.\n\nWhen encoding the benchmark files, the output size is smaller:\n\nlen(in)\told_len(out)\tnew_len(out)\tnew/old_ratio\tdescription\n102400\t23488\t22842\t0.97\thtml\n702087\t346345\t335387\t0.97\turls\n123093\t123034\t123034\t1.00\tjpg\n200\t144\t146\t1.01\tjpg_200\n102400\t83786\t83817\t1.00\tpdf\n409600\t95095\t92221\t0.97\thtml4\n152089\t91386\t88017\t0.96\ttxt1\n125179\t80526\t77525\t0.96\ttxt2\n426754\t244658\t234392\t0.96\ttxt3\n481861\t331356\t319097\t0.96\ttxt4\n118588\t24789\t23295\t0.94\tpb\n184320\t74129\t69526\t0.94\tgaviota\n\nOn GOARCH\u003damd64, the throughput numbers are also faster:\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsEncode1e1-8     674.93       681.22       1.01x\nBenchmarkWordsEncode1e2-8     47.92        49.91        1.04x\nBenchmarkWordsEncode1e3-8     189.48       213.64       1.13x\nBenchmarkWordsEncode1e4-8     193.17       245.31       1.27x\nBenchmarkWordsEncode1e5-8     151.44       178.84       1.18x\nBenchmarkWordsEncode1e6-8     180.63       203.74       1.13x\nBenchmarkRandomEncode-8       4700.25      5711.91      1.22x\nBenchmark_ZFlat0-8            372.12       422.42       1.14x\nBenchmark_ZFlat1-8            187.62       270.16       1.44x\nBenchmark_ZFlat2-8            4891.26      5542.08      1.13x\nBenchmark_ZFlat3-8            86.16        92.53        1.07x\nBenchmark_ZFlat4-8            570.31       963.51       1.69x\nBenchmark_ZFlat5-8            366.84       418.91       1.14x\nBenchmark_ZFlat6-8            164.18       182.67       1.11x\nBenchmark_ZFlat7-8            155.23       175.64       1.13x\nBenchmark_ZFlat8-8            169.62       193.08       1.14x\nBenchmark_ZFlat9-8            149.43       168.62       1.13x\nBenchmark_ZFlat10-8           412.63       497.87       1.21x\nBenchmark_ZFlat11-8           247.98       269.43       1.09x\n"
    },
    {
      "commit": "ebebc717213d6f16fd33dd6a2f74e776af6493c3",
      "tree": "968795dcf9a69169698723df8b74d5765df12d0d",
      "parents": [
        "7ede8d1b136c90ae4e1bee23e8a36693adca8751"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 02 23:25:18 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 02 23:25:18 2016"
      },
      "message": "Raise the \"always encode as literal\" size threshold from 4 to 14.\n\nThis isn\u0027t an optimization per se, although it does trade off the\n\"encode 10 bytes\" benchmark to favor speed over output size. The point\nof this commit is to move closer to what the C++ snappy code does.\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsEncode1e1-8     5.77         674.93       116.97x\nBenchmarkWordsEncode1e2-8     47.96        47.92        1.00x\nBenchmarkWordsEncode1e3-8     190.33       189.48       1.00x\nBenchmarkWordsEncode1e4-8     190.25       193.17       1.02x\nBenchmarkWordsEncode1e5-8     150.65       151.44       1.01x\nBenchmarkWordsEncode1e6-8     180.11       180.63       1.00x\nBenchmarkRandomEncode-8       4782.70      4700.25      0.98x\nBenchmark_ZFlat0-8            372.49       372.12       1.00x\nBenchmark_ZFlat1-8            186.49       187.62       1.01x\nBenchmark_ZFlat2-8            4979.47      4891.26      0.98x\nBenchmark_ZFlat3-8            85.76        86.16        1.00x\nBenchmark_ZFlat4-8            566.31       570.31       1.01x\nBenchmark_ZFlat5-8            366.01       366.84       1.00x\nBenchmark_ZFlat6-8            162.13       164.18       1.01x\nBenchmark_ZFlat7-8            153.69       155.23       1.01x\nBenchmark_ZFlat8-8            167.91       169.62       1.01x\nBenchmark_ZFlat9-8            147.71       149.43       1.01x\nBenchmark_ZFlat10-8           414.06       412.63       1.00x\nBenchmark_ZFlat11-8           248.87       247.98       1.00x\n"
    },
    {
      "commit": "7ede8d1b136c90ae4e1bee23e8a36693adca8751",
      "tree": "a457aba5987a9b017e6cb37311692874788aa371",
      "parents": [
        "d1f56d22221367c22b310feca1ba49a062f3d646"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 02 22:30:29 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 02 22:30:29 2016"
      },
      "message": "Eliminate some bounds checks in the encoder.\n\nAs per\nhttps://groups.google.com/d/msg/golang-dev/jVP6h21OyL8/Syhfot9XBQAJ,\nrecent versions of the gc compiler can optimize:\n\nfunc load32(b []byte, i int32) uint32 {\n  b \u003d b[i : i+4 : len(b)]\n  return uint32(b[0]) | etc | uint32(b[3])\u003c\u003c24\n}\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsEncode1e1-8     5.78         5.77         1.00x\nBenchmarkWordsEncode1e2-8     47.22        47.96        1.02x\nBenchmarkWordsEncode1e3-8     183.53       190.33       1.04x\nBenchmarkWordsEncode1e4-8     198.95       190.25       0.96x\nBenchmarkWordsEncode1e5-8     144.60       150.65       1.04x\nBenchmarkWordsEncode1e6-8     172.11       180.11       1.05x\nBenchmarkRandomEncode-8       4547.98      4782.70      1.05x\nBenchmark_ZFlat0-8            359.18       372.49       1.04x\nBenchmark_ZFlat1-8            181.57       186.49       1.03x\nBenchmark_ZFlat2-8            4566.75      4979.47      1.09x\nBenchmark_ZFlat3-8            86.00        85.76        1.00x\nBenchmark_ZFlat4-8            558.08       566.31       1.01x\nBenchmark_ZFlat5-8            354.18       366.01       1.03x\nBenchmark_ZFlat6-8            156.20       162.13       1.04x\nBenchmark_ZFlat7-8            147.76       153.69       1.04x\nBenchmark_ZFlat8-8            162.49       167.91       1.03x\nBenchmark_ZFlat9-8            142.33       147.71       1.04x\nBenchmark_ZFlat10-8           401.93       414.06       1.03x\nBenchmark_ZFlat11-8           235.94       248.87       1.05x\n"
    },
    {
      "commit": "d1f56d22221367c22b310feca1ba49a062f3d646",
      "tree": "a81053aa146b5bffb46d53d1d50895570625d95f",
      "parents": [
        "5f1c01d9f64b941dd9582c638279d046eda6ca31"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 02 05:22:40 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Apr 02 05:22:40 2016"
      },
      "message": "Encode copies of length 65, 66 or 67 as 5 bytes, not 6.\n\nThe benchmarks don\u0027t show a big change either way, but the output is\nshorter, and it matches what the C++ snappy code does.\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsEncode1e1-8     5.77         5.77         1.00x\nBenchmarkWordsEncode1e2-8     47.15        47.26        1.00x\nBenchmarkWordsEncode1e3-8     180.77       183.25       1.01x\nBenchmarkWordsEncode1e4-8     202.01       198.96       0.98x\nBenchmarkWordsEncode1e5-8     145.66       144.68       0.99x\nBenchmarkWordsEncode1e6-8     174.12       172.31       0.99x\nBenchmarkRandomEncode-8       4522.91      4495.78      0.99x\nBenchmark_ZFlat0-8            359.70       359.79       1.00x\nBenchmark_ZFlat1-8            181.18       181.82       1.00x\nBenchmark_ZFlat2-8            4612.52      4557.46      0.99x\nBenchmark_ZFlat3-8            85.65        84.82        0.99x\nBenchmark_ZFlat4-8            559.51       558.52       1.00x\nBenchmark_ZFlat5-8            354.88       352.91       0.99x\nBenchmark_ZFlat6-8            156.14       156.26       1.00x\nBenchmark_ZFlat7-8            148.18       148.12       1.00x\nBenchmark_ZFlat8-8            162.68       162.21       1.00x\nBenchmark_ZFlat9-8            141.81       142.32       1.00x\nBenchmark_ZFlat10-8           399.79       401.94       1.01x\nBenchmark_ZFlat11-8           237.43       235.91       0.99x\n"
    },
    {
      "commit": "5f1c01d9f64b941dd9582c638279d046eda6ca31",
      "tree": "5a6a9de0fbf2069d11709eded2c7abe614ca9d0e",
      "parents": [
        "427fb6fc07997f43afa32f35e850833760e489a7"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Mar 04 05:48:22 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Mar 04 05:48:22 2016"
      },
      "message": "Optimize a 16-byte load and store.\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsDecode1e1-8     528.93       528.93       1.00x\nBenchmarkWordsDecode1e2-8     983.60       999.00       1.02x\nBenchmarkWordsDecode1e3-8     1474.03      1513.22      1.03x\nBenchmarkWordsDecode1e4-8     1523.38      1561.36      1.02x\nBenchmarkWordsDecode1e5-8     792.34       800.00       1.01x\nBenchmarkWordsDecode1e6-8     881.58       885.13       1.00x\nBenchmark_UFlat0-8            2168.73      2224.25      1.03x\nBenchmark_UFlat1-8            1431.99      1446.11      1.01x\nBenchmark_UFlat2-8            15392.46     15301.72     0.99x\nBenchmark_UFlat3-8            1825.26      1841.57      1.01x\nBenchmark_UFlat4-8            10885.32     11384.32     1.05x\nBenchmark_UFlat5-8            1955.55      2002.59      1.02x\nBenchmark_UFlat6-8            833.99       829.35       0.99x\nBenchmark_UFlat7-8            794.80       793.35       1.00x\nBenchmark_UFlat8-8            859.01       854.84       1.00x\nBenchmark_UFlat9-8            731.84       726.50       0.99x\nBenchmark_UFlat10-8           2775.21      2898.57      1.04x\nBenchmark_UFlat11-8           1032.75      1032.47      1.00x\n"
    },
    {
      "commit": "427fb6fc07997f43afa32f35e850833760e489a7",
      "tree": "ab6c116a071e3d0db9c79e88031040f750f13abd",
      "parents": [
        "4c1fc8e426266f00229956994142877543e8b514"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Feb 26 06:30:25 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Feb 26 06:30:25 2016"
      },
      "message": "Optimize asm for decoding copy fragments some more.\n\nRelative to the previous commit:\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsDecode1e1-8     518.80       508.74       0.98x\nBenchmarkWordsDecode1e2-8     871.43       962.52       1.10x\nBenchmarkWordsDecode1e3-8     1411.32      1435.51      1.02x\nBenchmarkWordsDecode1e4-8     1469.60      1514.02      1.03x\nBenchmarkWordsDecode1e5-8     771.07       807.73       1.05x\nBenchmarkWordsDecode1e6-8     872.19       892.24       1.02x\nBenchmark_UFlat0-8            1129.79      2200.22      1.95x\nBenchmark_UFlat1-8            1075.37      1446.09      1.34x\nBenchmark_UFlat2-8            15617.45     14706.88     0.94x\nBenchmark_UFlat3-8            1438.15      1787.82      1.24x\nBenchmark_UFlat4-8            4838.37      10683.24     2.21x\nBenchmark_UFlat5-8            1075.46      1965.33      1.83x\nBenchmark_UFlat6-8            811.70       833.52       1.03x\nBenchmark_UFlat7-8            781.87       792.85       1.01x\nBenchmark_UFlat8-8            819.38       854.75       1.04x\nBenchmark_UFlat9-8            724.43       730.21       1.01x\nBenchmark_UFlat10-8           1193.70      2775.98      2.33x\nBenchmark_UFlat11-8           879.15       1037.94      1.18x\n\nAs with previous recent commits, the new asm code is covered by existing\ntests: TestDecode, TestDecodeLengthOffset and TestDecodeGoldenInput.\nThere is also a new test for the slowForwardCopy algorithm.\n\nAs a data point, the \"new MB/s\" numbers are now in the same ballpark as\nthe benchmark numbers that I get from the C++ snappy implementation on\nthe same machine:\n\nBM_UFlat/0   2.4GB/s    html\nBM_UFlat/1   1.4GB/s    urls\nBM_UFlat/2   21.1GB/s   jpg\nBM_UFlat/3   1.5GB/s    jpg_200\nBM_UFlat/4   10.2GB/s   pdf\nBM_UFlat/5   2.1GB/s    html4\nBM_UFlat/6   990.6MB/s  txt1\nBM_UFlat/7   930.1MB/s  txt2\nBM_UFlat/8   1.0GB/s    txt3\nBM_UFlat/9   849.7MB/s  txt4\nBM_UFlat/10  2.9GB/s    pb\nBM_UFlat/11  1.2GB/s    gaviota\n\nAs another data point, here is the amd64 asm code as of this commit\ncompared to the most recent pure Go implementation, revision 03ee571c:\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsDecode1e1-8     498.83       508.74       1.02x\nBenchmarkWordsDecode1e2-8     445.12       962.52       2.16x\nBenchmarkWordsDecode1e3-8     530.29       1435.51      2.71x\nBenchmarkWordsDecode1e4-8     361.08       1514.02      4.19x\nBenchmarkWordsDecode1e5-8     270.69       807.73       2.98x\nBenchmarkWordsDecode1e6-8     290.91       892.24       3.07x\nBenchmark_UFlat0-8            543.87       2200.22      4.05x\nBenchmark_UFlat1-8            449.84       1446.09      3.21x\nBenchmark_UFlat2-8            15511.96     14706.88     0.95x\nBenchmark_UFlat3-8            873.92       1787.82      2.05x\nBenchmark_UFlat4-8            2978.58      10683.24     3.59x\nBenchmark_UFlat5-8            536.04       1965.33      3.67x\nBenchmark_UFlat6-8            278.33       833.52       2.99x\nBenchmark_UFlat7-8            271.63       792.85       2.92x\nBenchmark_UFlat8-8            288.86       854.75       2.96x\nBenchmark_UFlat9-8            262.13       730.21       2.79x\nBenchmark_UFlat10-8           640.03       2775.98      4.34x\nBenchmark_UFlat11-8           356.37       1037.94      2.91x\n\nThe UFlat2 case is decoding a compressed JPEG file, a binary format, and\nso Snappy is not actually getting much extra compression. Decompression\ncollapses to not much more than repeatedly invoking runtime.memmove, so\noptimizing the snappy code per se doesn\u0027t have a huge impact on that\nparticular benchmark number.\n"
    },
    {
      "commit": "4c1fc8e426266f00229956994142877543e8b514",
      "tree": "933464732990407ee05625fb7d6a27a94188246c",
      "parents": [
        "8c7c9dec5965484f0a81268ce7985fe31e5d5955"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Feb 26 06:21:48 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Feb 26 06:21:48 2016"
      },
      "message": "Optimize asm for decoding copy fragments.\n\nRelative to the previous commit:\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsDecode1e1-8     518.05       518.80       1.00x\nBenchmarkWordsDecode1e2-8     776.28       871.43       1.12x\nBenchmarkWordsDecode1e3-8     995.41       1411.32      1.42x\nBenchmarkWordsDecode1e4-8     615.92       1469.60      2.39x\nBenchmarkWordsDecode1e5-8     453.95       771.07       1.70x\nBenchmarkWordsDecode1e6-8     453.74       872.19       1.92x\nBenchmark_UFlat0-8            863.12       1129.79      1.31x\nBenchmark_UFlat1-8            766.01       1075.37      1.40x\nBenchmark_UFlat2-8            15463.36     15617.45     1.01x\nBenchmark_UFlat3-8            1388.63      1438.15      1.04x\nBenchmark_UFlat4-8            4367.79      4838.37      1.11x\nBenchmark_UFlat5-8            844.84       1075.46      1.27x\nBenchmark_UFlat6-8            442.42       811.70       1.83x\nBenchmark_UFlat7-8            437.68       781.87       1.79x\nBenchmark_UFlat8-8            458.19       819.38       1.79x\nBenchmark_UFlat9-8            423.36       724.43       1.71x\nBenchmark_UFlat10-8           1023.05      1193.70      1.17x\nBenchmark_UFlat11-8           507.18       879.15       1.73x\n"
    },
    {
      "commit": "8c7c9dec5965484f0a81268ce7985fe31e5d5955",
      "tree": "3d28a7ffcd2b548265a6b8ed2c28f654439f9039",
      "parents": [
        "402436317ad8035a7246ee89492064f9e6cbb4ce"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Feb 26 06:17:00 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Feb 26 06:17:00 2016"
      },
      "message": "Optimize asm for decoding literal fragments.\n\nRelative to the previous commit:\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsDecode1e1-8     519.36       518.05       1.00x\nBenchmarkWordsDecode1e2-8     691.63       776.28       1.12x\nBenchmarkWordsDecode1e3-8     858.97       995.41       1.16x\nBenchmarkWordsDecode1e4-8     581.86       615.92       1.06x\nBenchmarkWordsDecode1e5-8     380.78       453.95       1.19x\nBenchmarkWordsDecode1e6-8     403.12       453.74       1.13x\nBenchmark_UFlat0-8            784.21       863.12       1.10x\nBenchmark_UFlat1-8            625.49       766.01       1.22x\nBenchmark_UFlat2-8            15366.67     15463.36     1.01x\nBenchmark_UFlat3-8            1321.47      1388.63      1.05x\nBenchmark_UFlat4-8            4338.83      4367.79      1.01x\nBenchmark_UFlat5-8            770.24       844.84       1.10x\nBenchmark_UFlat6-8            386.10       442.42       1.15x\nBenchmark_UFlat7-8            376.79       437.68       1.16x\nBenchmark_UFlat8-8            400.47       458.19       1.14x\nBenchmark_UFlat9-8            362.89       423.36       1.17x\nBenchmark_UFlat10-8           943.89       1023.05      1.08x\nBenchmark_UFlat11-8           493.98       507.18       1.03x\n"
    },
    {
      "commit": "402436317ad8035a7246ee89492064f9e6cbb4ce",
      "tree": "dd8f8cc885c4970b5ae71b48e1a618a52dfb67bc",
      "parents": [
        "03ee571cd35416c1f81a9f9ad7437493f356666d"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Feb 26 06:03:02 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Feb 26 06:03:02 2016"
      },
      "message": "Rewrite the core of the decoder in asm.\n\nThis is an experiment. A future commit may roll back this commit if it\nturns out that the complexity and inherent unsafety of asm code\noutweights the performance benefits.\n\nThe new asm code is covered by existing tests: TestDecode,\nTestDecodeLengthOffset and TestDecodeGoldenInput. These tests were\nchecked in by previous commits, to make it clear that they pass both\nbefore and after this new implementation. This commit is purely an\noptimization; there should be no other change in behavior.\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsDecode1e1-8     498.83       519.36       1.04x\nBenchmarkWordsDecode1e2-8     445.12       691.63       1.55x\nBenchmarkWordsDecode1e3-8     530.29       858.97       1.62x\nBenchmarkWordsDecode1e4-8     361.08       581.86       1.61x\nBenchmarkWordsDecode1e5-8     270.69       380.78       1.41x\nBenchmarkWordsDecode1e6-8     290.91       403.12       1.39x\nBenchmark_UFlat0-8            543.87       784.21       1.44x\nBenchmark_UFlat1-8            449.84       625.49       1.39x\nBenchmark_UFlat2-8            15511.96     15366.67     0.99x\nBenchmark_UFlat3-8            873.92       1321.47      1.51x\nBenchmark_UFlat4-8            2978.58      4338.83      1.46x\nBenchmark_UFlat5-8            536.04       770.24       1.44x\nBenchmark_UFlat6-8            278.33       386.10       1.39x\nBenchmark_UFlat7-8            271.63       376.79       1.39x\nBenchmark_UFlat8-8            288.86       400.47       1.39x\nBenchmark_UFlat9-8            262.13       362.89       1.38x\nBenchmark_UFlat10-8           640.03       943.89       1.47x\nBenchmark_UFlat11-8           356.37       493.98       1.39x\n\nThe numbers above are pure Go vs the new asm; about a 1.4x improvement.\nAs a data point, the numbers below are pure Go vs pure Go with bounds\nchecking disabled:\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsDecode1e1-8     498.83       516.68       1.04x\nBenchmarkWordsDecode1e2-8     445.12       495.22       1.11x\nBenchmarkWordsDecode1e3-8     530.29       612.44       1.15x\nBenchmarkWordsDecode1e4-8     361.08       374.12       1.04x\nBenchmarkWordsDecode1e5-8     270.69       300.66       1.11x\nBenchmarkWordsDecode1e6-8     290.91       325.22       1.12x\nBenchmark_UFlat0-8            543.87       655.85       1.21x\nBenchmark_UFlat1-8            449.84       516.04       1.15x\nBenchmark_UFlat2-8            15511.96     15291.13     0.99x\nBenchmark_UFlat3-8            873.92       1063.07      1.22x\nBenchmark_UFlat4-8            2978.58      3615.30      1.21x\nBenchmark_UFlat5-8            536.04       639.51       1.19x\nBenchmark_UFlat6-8            278.33       309.44       1.11x\nBenchmark_UFlat7-8            271.63       301.89       1.11x\nBenchmark_UFlat8-8            288.86       322.38       1.12x\nBenchmark_UFlat9-8            262.13       289.92       1.11x\nBenchmark_UFlat10-8           640.03       787.34       1.23x\nBenchmark_UFlat11-8           356.37       403.35       1.13x\n\nIn other words, eliminating bounds checking gets you about a 1.15x\nimprovement. All the other benefits of hand-written asm gets you another\n1.2x over and above that.\n\nFor reference, I\u0027ve copy/pasted the \"go tool compile -S -B -o /dev/null\nmain.go\" output at http://play.golang.org/p/vOs4Z7Qf1X\n"
    },
    {
      "commit": "03ee571cd35416c1f81a9f9ad7437493f356666d",
      "tree": "94d50e03680e51342abff77522b67c11f5c0eee1",
      "parents": [
        "9eb9b0a693667cb6f6f82bfaad32bc9604818ccb"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Feb 26 04:08:01 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Feb 26 04:08:01 2016"
      },
      "message": "Use more than one \u0027not present\u0027 byte value to catch Decode overruns.\n\nPreviously, the dst buffer was initialized to all 0xfe byte values. An\noverrun caused by an incorrect copy from an early location to a later\none (past the end of dst) could have slipped through as a false negative\nbecause the old value and the new value were the same value (0xfe), so\nno change was detected.\n\nAfter this commit, the dst buffer is initialized with a variety of byte\nvalues, which makes it less likely, although not impossible, to have\nsuch false negatives.\n"
    },
    {
      "commit": "9eb9b0a693667cb6f6f82bfaad32bc9604818ccb",
      "tree": "f30987257208c6bbf73db55fdf713fd7120785b6",
      "parents": [
        "da163d3224e54fb4a5616b463f429a267c490ab0"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Feb 26 03:40:06 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Fri Feb 26 03:40:06 2016"
      },
      "message": "Add a comment about forwardCopy semantics.\n"
    },
    {
      "commit": "da163d3224e54fb4a5616b463f429a267c490ab0",
      "tree": "845fb5af573404f075b9b25622df062d764cbe4b",
      "parents": [
        "12528fe03377c314f32e3dc5e029835d42ccad90"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 23:31:01 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 23:31:01 2016"
      },
      "message": "Note that Decode\u0027s dst and src must not overlap.\n"
    },
    {
      "commit": "12528fe03377c314f32e3dc5e029835d42ccad90",
      "tree": "4814f23a84735efedc456f991704e8ca0ad931b7",
      "parents": [
        "32b392a8a69efa93c6b91f2879ce2e8d7cc48e6a"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 12:55:04 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 12:55:04 2016"
      },
      "message": "Make TestDecodeLengthOffset test values above 16.\n\nAn upcoming commit will switch algorithms at values near this magic cutoff.\n"
    },
    {
      "commit": "32b392a8a69efa93c6b91f2879ce2e8d7cc48e6a",
      "tree": "db0abd1f54f6ac67098dc0df788229d0a9f611d8",
      "parents": [
        "624b11c0e081dc0941e36b0f1c84436dc78b9384"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 05:58:01 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 05:58:01 2016"
      },
      "message": "Make a small s/uint/uint32/ decoder optimization.\n\nI\u0027m not entirely sure why the benchmark numbers improve as much as they\ndo, but I\u0027ll take it.\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsDecode1e1-8     482.12       485.84       1.01x\nBenchmarkWordsDecode1e2-8     372.28       421.86       1.13x\nBenchmarkWordsDecode1e3-8     482.21       525.44       1.09x\nBenchmarkWordsDecode1e4-8     339.46       360.87       1.06x\nBenchmarkWordsDecode1e5-8     264.90       270.42       1.02x\nBenchmarkWordsDecode1e6-8     284.27       290.98       1.02x\nBenchmark_UFlat0-8            511.15       544.02       1.06x\nBenchmark_UFlat1-8            431.52       450.03       1.04x\nBenchmark_UFlat2-8            15208.70     15099.07     0.99x\nBenchmark_UFlat3-8            805.02       871.78       1.08x\nBenchmark_UFlat4-8            2631.19      2980.30      1.13x\nBenchmark_UFlat5-8            501.62       535.45       1.07x\nBenchmark_UFlat6-8            271.30       278.13       1.03x\nBenchmark_UFlat7-8            265.19       272.14       1.03x\nBenchmark_UFlat8-8            282.54       288.80       1.02x\nBenchmark_UFlat9-8            256.39       262.69       1.02x\nBenchmark_UFlat10-8           590.37       640.96       1.09x\nBenchmark_UFlat11-8           339.13       357.01       1.05x\n"
    },
    {
      "commit": "624b11c0e081dc0941e36b0f1c84436dc78b9384",
      "tree": "927b5e3ce585c3ff3b868dee1669dc4d7f5920b6",
      "parents": [
        "bb00731b7e6e99396fd9fceb71cb9a4ec8d5a84e"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 04:30:12 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 04:30:12 2016"
      },
      "message": "Fix some comment styles.\n"
    },
    {
      "commit": "bb00731b7e6e99396fd9fceb71cb9a4ec8d5a84e",
      "tree": "eced5bef470601f0520fa94d15f9b4533f916588",
      "parents": [
        "343d0f457986aaa28f2f835d2fc658b05f2f0575"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 03:10:04 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 03:10:04 2016"
      },
      "message": "Ensure that Decode doesn\u0027t write past the decoded length.\n"
    },
    {
      "commit": "343d0f457986aaa28f2f835d2fc658b05f2f0575",
      "tree": "ee29052b5070223bdf41f85533ebc84e4fe78d33",
      "parents": [
        "f1ae40350d6b5e75c92360916bf2b8682fefdb9d"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 02:31:42 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 02:31:42 2016"
      },
      "message": "Add a snappytool command that uses the C++ library.\n\nThe pi.txt.rawsnappy file was generated by this tool, on an amd64\n(little-endian) system.\n"
    },
    {
      "commit": "f1ae40350d6b5e75c92360916bf2b8682fefdb9d",
      "tree": "f0cb9414ba2ef825675548400f5e6e96ffe08c40",
      "parents": [
        "6d15e7ca47959c9369adfcdc4dee85987e724222"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 00:51:15 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 00:51:15 2016"
      },
      "message": "Update .gitignore.\n"
    },
    {
      "commit": "6d15e7ca47959c9369adfcdc4dee85987e724222",
      "tree": "d335fcd371236c4352745c2da40165ac39971bd6",
      "parents": [
        "a64ab7d6ec9063f18962f0e493a31e7093df6102"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 00:27:56 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Thu Feb 25 00:27:56 2016"
      },
      "message": "Move benchmark data files to testdata/bench.\n\nAn upcoming commit will add other testdata files.\n"
    },
    {
      "commit": "a64ab7d6ec9063f18962f0e493a31e7093df6102",
      "tree": "0040375f758f8cb07951c03d48eca37006f71c14",
      "parents": [
        "b95e9b379b96cebd6fe84815474678b48f01aae5"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Feb 23 12:49:10 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Feb 23 12:49:10 2016"
      },
      "message": "Add TestDecodeLengthOffset.\n"
    },
    {
      "commit": "b95e9b379b96cebd6fe84815474678b48f01aae5",
      "tree": "81303dd4f016d5b68de37a1091b40464149d18d4",
      "parents": [
        "939eddc12b3be18dfc77ed573344c3c689527ef3"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Feb 23 11:58:05 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Feb 23 11:58:05 2016"
      },
      "message": "Merge overlapping test cases in TestInvalidVarint and TestDecode.\n"
    },
    {
      "commit": "939eddc12b3be18dfc77ed573344c3c689527ef3",
      "tree": "1036d8c213d5e8e207b96a40512cb9ccfafe05b4",
      "parents": [
        "e2923611954f008a6e6c8dfb5ae11052aa913332"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Feb 23 02:12:51 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Tue Feb 23 02:12:51 2016"
      },
      "message": "Add some more TestDecode cases.\n"
    },
    {
      "commit": "e2923611954f008a6e6c8dfb5ae11052aa913332",
      "tree": "2ede7af25f9f87b4e108c1f46ad78122ff8d8dce",
      "parents": [
        "bf2ded9d81f5c22b62cf76363673c6f9765a6703"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Mon Feb 22 02:44:50 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Mon Feb 22 02:44:50 2016"
      },
      "message": "Catch overflow when incrementing src pointers.\n"
    },
    {
      "commit": "bf2ded9d81f5c22b62cf76363673c6f9765a6703",
      "tree": "57d94b39b503b9a7d5359d29848052c676b2a47b",
      "parents": [
        "d1d908a252c22fd7afd36190d5cffb144aa8f777"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Mon Feb 22 01:44:36 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Mon Feb 22 01:44:36 2016"
      },
      "message": "Use 64K blocks when encoding long inputs.\n\nThis enables future optimizations, such as an encoder\u0027s hash table entry being\nuint16 instead of int32.\n"
    },
    {
      "commit": "d1d908a252c22fd7afd36190d5cffb144aa8f777",
      "tree": "747c65252cd7e9ae49c6d916954c50006c40b2c2",
      "parents": [
        "c2359a1bd0bd4a2de4f1bd92ccd045fb60d0a994"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Feb 14 05:54:35 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sun Feb 14 05:54:35 2016"
      },
      "message": "Fix heuristic match skipping.\n\nThe heuristic was introduced in 4e2aa98e, based on the C++ Snappy\nimplementation, but the Go code contained a flawed optimization. The C++ code\nused an explicit skip variable:\n\n  uint32 bytes_between_hash_lookups \u003d skip++ \u003e\u003e 5;\n  next_ip \u003d ip + bytes_between_hash_lookups;\n\nwhereas the Go code optimized this to be an implicit skip:\n\n  s +\u003d 1 + (s-lit)\u003e\u003e5\n\nThis is equivalent for small s values (relative to lit, the last hash table\nhit), but diverges for large ones. This Go program demonstrates the difference:\n\n// main prints the encoder skipping behavior when seeing no hash table hits.\nfunc main() {\n  s0, s1 :\u003d 0, 0\n  skip :\u003d 32\n  for i :\u003d 0; i \u003c 300; i++ {\n    // This is the C++ Snappy algorithm.\n    bytes_between_hash_lookups :\u003d skip \u003e\u003e 5\n    skip++\n    s0 +\u003d bytes_between_hash_lookups\n\n    // This is the Go Snappy algorithm.\n    s1 +\u003d 1 + s1\u003e\u003e5\n\n    // The intention was that the Go algorithm behaves the same as the C++\n    // one, but it doesn\u0027t.\n    if i%10 \u003d\u003d 0 {\n      fmt.Printf(\"%d\\t%d\\t%d\\n\", i, s0, s1)\n    }\n  }\n}\n\nIt prints:\n\n0\t1\t1\n10\t11\t11\n20\t21\t21\n30\t31\t31\n40\t50\t50\n50\t70\t73\n60\t90\t105\n70\t117\t149\n80\t147\t208\n90\t177\t288\n100\t212\t398\n110\t252\t548\n120\t292\t752\n130\t335\t1030\n140\t385\t1408\n150\t435\t1922\n160\t486\t2619\n170\t546\t3568\n180\t606\t4861\n190\t666\t6617\n200\t735\t9005\n210\t805\t12257\n220\t875\t16681\n230\t952\t22697\n240\t1032\t30881\n250\t1112\t42015\n260\t1197\t57161\n270\t1287\t77764\n280\t1377\t105791\n290\t1470\t143914\n\nThe C++ algorithm is quadratic. The Go algorithm is exponential.\n\nThis commit re-introduces the explicit skip variable, so that the Go\nimplementation matches the C++ implementation.\n\nFor completeness, benchmark numbers are included below, but the worse numbers\nmerely reflect that the old Go algorithm was too aggressive on skipping ahead\non incompressible input (RandomEncode, ZFlat2 and ZFlat4), and so after an\ninitial warm-up period, it was essentially performing not much more than a\nmemcpy. Memcpy is indeed fast in terms of MB/s, but it doesn\u0027t compress at all,\nwhich obviously defeats the whole purpose of a compression format like Snappy.\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsEncode1e1-4     3.65         3.77         1.03x\nBenchmarkWordsEncode1e2-4     29.22        29.35        1.00x\nBenchmarkWordsEncode1e3-4     99.46        101.20       1.02x\nBenchmarkWordsEncode1e4-4     118.11       121.54       1.03x\nBenchmarkWordsEncode1e5-4     90.37        91.72        1.01x\nBenchmarkWordsEncode1e6-4     107.49       108.88       1.01x\nBenchmarkRandomEncode-4       7679.09      4491.97      0.58x\nBenchmark_ZFlat0-4            229.41       233.79       1.02x\nBenchmark_ZFlat1-4            115.10       116.83       1.02x\nBenchmark_ZFlat2-4            7256.88      3003.79      0.41x\nBenchmark_ZFlat3-4            53.39        54.02        1.01x\nBenchmark_ZFlat4-4            1873.63      289.28       0.15x\nBenchmark_ZFlat5-4            233.29       234.95       1.01x\nBenchmark_ZFlat6-4            101.33       102.79       1.01x\nBenchmark_ZFlat7-4            95.26        96.63        1.01x\nBenchmark_ZFlat8-4            105.66       106.89       1.01x\nBenchmark_ZFlat9-4            92.04        93.11        1.01x\nBenchmark_ZFlat10-4           265.68       265.93       1.00x\nBenchmark_ZFlat11-4           149.72       151.32       1.01x\n\nThese numbers were generated on an amd64 machine, but on a different machine\nthan the one used for other recent commits. The raw MB/s numbers are therefore\nnot directly comparable, although the speedup numbers should be.\n"
    },
    {
      "commit": "c2359a1bd0bd4a2de4f1bd92ccd045fb60d0a994",
      "tree": "af6da537d72cf6d7c6ce24d6cf5902f4a8798168",
      "parents": [
        "cc71ae7cc5b621a5a0d6c776ca4c571ab629f495"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Feb 13 09:09:53 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Feb 13 09:09:53 2016"
      },
      "message": "Catch MaxEncodedLen overflow.\n"
    },
    {
      "commit": "cc71ae7cc5b621a5a0d6c776ca4c571ab629f495",
      "tree": "8b0e3d1aac786833efbac1bf4e6fcd6a241ec1b3",
      "parents": [
        "51195a16b052437072a3e46972e348569f2a2f7a"
      ],
      "author": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Feb 13 03:11:38 2016"
      },
      "committer": {
        "name": "Nigel Tao",
        "email": "nigeltao@golang.org",
        "time": "Sat Feb 13 03:11:38 2016"
      },
      "message": "Change the encoder\u0027s hash table values from int to int32.\n\nDoing s/int/int32/ in \"var table [maxTableSize]int\" saves 64 KiB of\nstack space that needed zero\u0027ing. maxTableSize is 1\u003c\u003c14, or 16384.\n\nThe benchmarks show the biggest effect for small src lengths, or for\nmostly uncompressible data such as the JPEG file (possibly because the\nmultiple-byte skipping means that the src is effectively short).\n\nOn amd64:\n\nbenchmark                     old MB/s     new MB/s     speedup\nBenchmarkWordsEncode1e1-8     3.05         5.71         1.87x\nBenchmarkWordsEncode1e2-8     26.98        44.87        1.66x\nBenchmarkWordsEncode1e3-8     130.87       156.72       1.20x\nBenchmarkWordsEncode1e4-8     162.48       180.89       1.11x\nBenchmarkWordsEncode1e5-8     132.35       131.27       0.99x\nBenchmarkWordsEncode1e6-8     159.97       158.49       0.99x\nBenchmarkRandomEncode-8       12340.86     13485.69     1.09x\nBenchmark_ZFlat0-8            329.92       329.17       1.00x\nBenchmark_ZFlat1-8            165.06       164.46       1.00x\nBenchmark_ZFlat2-8            8955.25      10530.49     1.18x\nBenchmark_ZFlat3-8            47.79        80.06        1.68x\nBenchmark_ZFlat4-8            2650.55      2732.00      1.03x\nBenchmark_ZFlat5-8            336.52       334.94       1.00x\nBenchmark_ZFlat6-8            147.99       145.85       0.99x\nBenchmark_ZFlat7-8            136.32       137.20       1.01x\nBenchmark_ZFlat8-8            153.03       152.15       0.99x\nBenchmark_ZFlat9-8            133.18       131.74       0.99x\nBenchmark_ZFlat10-8           376.02       378.28       1.01x\nBenchmark_ZFlat11-8           224.16       216.81       0.97x\n\nThanks to Klaus Post for the original suggestion on\nhttps://github.com/golang/snappy/pull/23 but I hesitate to accept that\npull request in its entirety as it makes many changes, some more\ncomplicated than this separable, self-contained s/int/int32/ change.\n"
    }
  ],
  "next": "51195a16b052437072a3e46972e348569f2a2f7a"
}
