)]}'
{
  "commit": "ae43043f6c42add7bd0535b66edb344bbc6e9001",
  "tree": "29a52a443382e9222538205751ff58fa0673ad07",
  "parents": [
    "8231cd72a4224823653b76a167e0107f6da9719d"
  ],
  "author": {
    "name": "Laszlo Csomor",
    "email": "laszlocsomor@google.com",
    "time": "Tue Jul 17 04:18:30 2018 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-piper@google.com",
    "time": "Tue Jul 17 04:20:23 2018 -0700"
  },
  "message": "Windows,Bazel client: multithreaded file writing\n\nThe Bazel client on Windows now writes extracted\nbinaries to disk in parallel. On all other systems\nit writes them serially (as before).\n\nThis change makes blaze.cc:ActuallyExtractData()\nabout 3x faster when using a HDD. (In previous\nexperiments I saw no speedup with multi-threaded\nwriting on machines with an SSD.)\n\nThe Windows-specific code uses the native\nThreadpool API of Windows, creating a pool of at\nleast 8 and at most 16 threads. (This seems to be\na good balance between speed and thread count.)\n\nThe OS manages everything about the pool; Bazel\nsubmits callbacks and the pool executes them\nasynchronously.\n\nblaze.cc:ActuallyExtractData() speed, before:\n- Windows: 6.48s (avg) / 6.38s (median)\n- Linux (Debian): 4.78s (avg) / 4.79s (median)\n\nblaze.cc:ActuallyExtractData() speed, after:\n- Windows (8-16 threads): 2.05s (avg) / 2.01s (md)\n- Windows (1 thread): 5.77s (avg) / 5.74s (median)\n\nSee https://github.com/bazelbuild/bazel/issues/5444\n\nChange-Id: I7211f3d28eb8b9837352c16ff8df0411d5a9ebe1\n\nCloses #5600.\n\nChange-Id: I7a74d62a563c92948a4dfa8ad5ac83eae018db10\nPiperOrigin-RevId: 204891217\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "09760fcba3c7f43ad797c4c02aec854617883818",
      "old_mode": 33188,
      "old_path": "src/main/cpp/blaze.cc",
      "new_id": "c84c6d438912a470783f5ddae84100a35e465142",
      "new_mode": 33188,
      "new_path": "src/main/cpp/blaze.cc"
    },
    {
      "type": "modify",
      "old_id": "29596df57bdaf9472d6dcdcebfaf2d44212ec59e",
      "old_mode": 33188,
      "old_path": "src/main/cpp/blaze_util_platform.h",
      "new_id": "24a28eb6e7db0674721723829336471edb298aa0",
      "new_mode": 33188,
      "new_path": "src/main/cpp/blaze_util_platform.h"
    },
    {
      "type": "modify",
      "old_id": "0a3daaab81ef864c90bd1974d0a711169634c3f6",
      "old_mode": 33188,
      "old_path": "src/main/cpp/blaze_util_posix.cc",
      "new_id": "79ebbb062d09dde587af5ae4ce8396b15fab27c6",
      "new_mode": 33188,
      "new_path": "src/main/cpp/blaze_util_posix.cc"
    },
    {
      "type": "modify",
      "old_id": "3751a1d0b1cd417f17f57c987a3aca5a21c7f996",
      "old_mode": 33188,
      "old_path": "src/main/cpp/blaze_util_windows.cc",
      "new_id": "19ce3af00d6ed83217bad3eef6122b541dcdaeb2",
      "new_mode": 33188,
      "new_path": "src/main/cpp/blaze_util_windows.cc"
    }
  ]
}
