)]}'
{
  "commit": "51dfbbc517782e777007fbc9e4c79a5901c34d04",
  "tree": "edd371fd399f36f3b0f43f3e5dc86870619b2582",
  "parents": [
    "4797c1151d69741470c19fa56a27a7b912b1e604"
  ],
  "author": {
    "name": "Sebastian Pop",
    "email": "sebpop@gmail.com",
    "time": "Fri Dec 30 18:01:36 2016 +0000"
  },
  "committer": {
    "name": "Sebastian Pop",
    "email": "sebpop@gmail.com",
    "time": "Fri Dec 30 18:01:36 2016 +0000"
  },
  "message": "improve performance of string::find\n\nstring::find used to call the generic algorithm ::find.  The patch special\ncase string::find such that it ultimately gets converted to calls to memchr\nand memcmp.\n\nThe patch improves the performance of the string::find routine by about 20x.\n\nWithout the patch, the performance on an x86_64-linux 3400 MHz machine is:\n\nBenchmark                           Time           CPU Iterations\n-----------------------------------------------------------------\nBM_StringFindNoMatch/10             4 ns          4 ns  166421326\nBM_StringFindNoMatch/64            37 ns         37 ns   18754392\nBM_StringFindNoMatch/512          268 ns        268 ns    2586060\nBM_StringFindNoMatch/4k          2143 ns       2144 ns     328342\nBM_StringFindNoMatch/32k        16910 ns      16917 ns      40623\nBM_StringFindNoMatch/128k       67577 ns      67602 ns      10138\nBM_StringFindAllMatch/1             3 ns          3 ns  265163471\nBM_StringFindAllMatch/8             6 ns          6 ns  112582467\nBM_StringFindAllMatch/64           36 ns         36 ns   19566457\nBM_StringFindAllMatch/512         209 ns        209 ns    3318893\nBM_StringFindAllMatch/4k         1618 ns       1618 ns     432963\nBM_StringFindAllMatch/32k       12909 ns      12914 ns      54317\nBM_StringFindAllMatch/128k      48342 ns      48361 ns      13922\nBM_StringFindMatch1/1           33777 ns      33790 ns      20698\nBM_StringFindMatch1/8           33940 ns      33953 ns      20619\nBM_StringFindMatch1/64          34038 ns      34051 ns      20571\nBM_StringFindMatch1/512         34217 ns      34230 ns      20480\nBM_StringFindMatch1/4k          35510 ns      35524 ns      19752\nBM_StringFindMatch1/32k         46438 ns      46456 ns      15030\nBM_StringFindMatch2/1           33839 ns      33852 ns      20648\nBM_StringFindMatch2/8           33950 ns      33963 ns      20594\nBM_StringFindMatch2/64          33846 ns      33859 ns      20668\nBM_StringFindMatch2/512         34023 ns      34036 ns      20279\nBM_StringFindMatch2/4k          35422 ns      35436 ns      19716\nBM_StringFindMatch2/32k         46570 ns      46588 ns      15027\n\nWith the patch applied\n\nBenchmark                           Time           CPU Iterations\n-----------------------------------------------------------------\nBM_StringFindNoMatch/10             5 ns          5 ns  133724346\nBM_StringFindNoMatch/64             6 ns          6 ns  119312184\nBM_StringFindNoMatch/512           13 ns         13 ns   51539628\nBM_StringFindNoMatch/4k            77 ns         77 ns    8935934\nBM_StringFindNoMatch/32k          551 ns        551 ns    1222808\nBM_StringFindNoMatch/128k        2684 ns       2685 ns     259957\nBM_StringFindAllMatch/1             7 ns          7 ns   98017959\nBM_StringFindAllMatch/8             7 ns          7 ns   91466911\nBM_StringFindAllMatch/64            8 ns          8 ns   85707392\nBM_StringFindAllMatch/512          20 ns         20 ns   34490895\nBM_StringFindAllMatch/4k           93 ns         93 ns    7360375\nBM_StringFindAllMatch/32k         827 ns        828 ns     829944\nBM_StringFindAllMatch/128k       3593 ns       3594 ns     195815\nBM_StringFindMatch1/1            1332 ns       1332 ns     516354\nBM_StringFindMatch1/8            1336 ns       1336 ns     495876\nBM_StringFindMatch1/64           1338 ns       1339 ns     516656\nBM_StringFindMatch1/512          1357 ns       1357 ns     510717\nBM_StringFindMatch1/4k           1485 ns       1486 ns     461228\nBM_StringFindMatch1/32k          2235 ns       2236 ns     318253\nBM_StringFindMatch2/1            1335 ns       1335 ns     517105\nBM_StringFindMatch2/8            1336 ns       1337 ns     518004\nBM_StringFindMatch2/64           1344 ns       1345 ns     511751\nBM_StringFindMatch2/512          1361 ns       1361 ns     508150\nBM_StringFindMatch2/4k           1611 ns       1611 ns     463388\nBM_StringFindMatch2/32k          2187 ns       2187 ns     317532\n\nPatch written by Aditya Kumar and Sebastian Pop.\n\nDifferential Revision: https://reviews.llvm.org/D27068\n\ngit-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@290761 91177308-0d34-0410-b5e6-96231b3b80d8\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ef892391688326363830ed06b5e4121a05573f93",
      "new_mode": 33188,
      "new_path": "benchmarks/string.bench.cpp"
    },
    {
      "type": "modify",
      "old_id": "fc6097a1e0bc6855331f14538bd95baf218fe2e8",
      "old_mode": 33188,
      "old_path": "include/__string",
      "new_id": "b612d6ba627de942d86004827a12a229e588e141",
      "new_mode": 33188,
      "new_path": "include/__string"
    }
  ]
}
