)]}'
{
  "commit": "aee71dd70b3779c66950ce6a952deca13d48e55e",
  "tree": "ba5e077b2478755d5a423c9898c23b9bd3819cdd",
  "parents": [
    "cd1976dbef0a4a474cccb9e7fcb1e9cf2310df66"
  ],
  "author": {
    "name": "Martin Möhrmann",
    "email": "moehrmann@google.com",
    "time": "Fri Apr 27 21:58:59 2018 +0200"
  },
  "committer": {
    "name": "Martin Möhrmann",
    "email": "moehrmann@google.com",
    "time": "Tue May 08 21:15:16 2018 +0000"
  },
  "message": "cmd/compile: optimize map-clearing range idiom\n\nreplace map clears of the form:\n\n        for k :\u003d range m {\n                delete(m, k)\n        }\n\n(where m is map with key type that is reflexive for \u003d\u003d)\nwith a new runtime function that clears the maps backing\narray with a memclr and reinitializes the hmap struct.\n\nMap key types that for example contain floats are not\nreplaced by this optimization since NaN keys cannot\nbe deleted from maps using delete.\n\nname                           old time/op  new time/op  delta\nGoMapClear/Reflexive/1         92.2ns ± 1%  47.1ns ± 2%  -48.89%  (p\u003d0.000 n\u003d9+9)\nGoMapClear/Reflexive/10         108ns ± 1%    48ns ± 2%  -55.68%  (p\u003d0.000 n\u003d10+10)\nGoMapClear/Reflexive/100        303ns ± 2%   110ns ± 3%  -63.56%  (p\u003d0.000 n\u003d10+10)\nGoMapClear/Reflexive/1000      3.58µs ± 3%  1.23µs ± 2%  -65.49%  (p\u003d0.000 n\u003d9+10)\nGoMapClear/Reflexive/10000     28.2µs ± 3%  10.3µs ± 2%  -63.55%  (p\u003d0.000 n\u003d9+10)\nGoMapClear/NonReflexive/1       121ns ± 2%   124ns ± 7%     ~     (p\u003d0.097 n\u003d10+10)\nGoMapClear/NonReflexive/10      137ns ± 2%   139ns ± 3%   +1.53%  (p\u003d0.033 n\u003d10+10)\nGoMapClear/NonReflexive/100     331ns ± 3%   334ns ± 2%     ~     (p\u003d0.342 n\u003d10+10)\nGoMapClear/NonReflexive/1000   3.64µs ± 3%  3.64µs ± 2%     ~     (p\u003d0.887 n\u003d9+10)\nGoMapClear/NonReflexive/10000  28.1µs ± 2%  28.4µs ± 3%     ~     (p\u003d0.247 n\u003d10+10)\n\nFixes #20138\n\nChange-Id: I181332a8ef434a4f0d89659f492d8711db3f3213\nReviewed-on: https://go-review.googlesource.com/110055\nReviewed-by: Keith Randall \u003ckhr@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3ca1adc1f7669bd7b8630d04a7f8e742431e90bb",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/gc/builtin.go",
      "new_id": "6b416c8a5c99e355f49273f5d03629efc0627945",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/gc/builtin.go"
    },
    {
      "type": "modify",
      "old_id": "1d3f17c0d1a2d91ddc33fac8ebb77de786dcd441",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/gc/builtin/runtime.go",
      "new_id": "d459c07cbeca8e0ac6f8c2822732f14b1c711277",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/gc/builtin/runtime.go"
    },
    {
      "type": "modify",
      "old_id": "45a3b5cc42632ef3c29c984ac488672466fd4e40",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/gc/order.go",
      "new_id": "dce68a6c17ed02cb4ba8c66f9e3dadb3cb3648c4",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/gc/order.go"
    },
    {
      "type": "modify",
      "old_id": "5c3c5ca088960f4a9eccd7fca29291ad5b3f1cc1",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/gc/range.go",
      "new_id": "af818f6f4caa99d527a6b1f25b08d0f3d1eff4d8",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/gc/range.go"
    },
    {
      "type": "modify",
      "old_id": "1926123458816e36605f5adf13cf87dd16a4acdc",
      "old_mode": 33188,
      "old_path": "src/runtime/map.go",
      "new_id": "cc1358a97738bf914ba3af92f9e0566bc7a001f4",
      "new_mode": 33188,
      "new_path": "src/runtime/map.go"
    },
    {
      "type": "modify",
      "old_id": "aec0c51f3fd7602e618aff3b69db4e5784c3f0c3",
      "old_mode": 33188,
      "old_path": "src/runtime/map_benchmark_test.go",
      "new_id": "025c0398d3bdac5803a5a14454c7d12984c0d8d5",
      "new_mode": 33188,
      "new_path": "src/runtime/map_benchmark_test.go"
    },
    {
      "type": "modify",
      "old_id": "57e219ca0612d175c31dc5a134643e37ce3ce66a",
      "old_mode": 33188,
      "old_path": "test/codegen/maps.go",
      "new_id": "d1677158988f4c9631b61bd9615b902dc7511680",
      "new_mode": 33188,
      "new_path": "test/codegen/maps.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a29f30da743e77cb43f92f9af58eb5def6e41756",
      "new_mode": 33188,
      "new_path": "test/mapclear.go"
    }
  ]
}
