)]}'
{
  "log": [
    {
      "commit": "df4942c04a63ae6e4f5c78ece9f696d6b8b74d32",
      "tree": "f4e1061bcaf821753263413f1e89fb82f5d50e99",
      "parents": [
        "3e1b5f46c07aef5983ecf2feb1c3369b2cd200c0"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Feb 17 19:58:53 2015 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Feb 19 14:58:24 2015 -0800"
      },
      "message": "Refactor the benchmark code.\n\nChanges:\n- Modify the benchmarks to derive from a single Benchmark object.\n- Rewrite the main iteration code. This includes changing the iteration\n  code to use the actual total time calculated by the benchmark as a basis\n  for determining whether there are enough iterations instead of using\n  the time it takes to run the benchmark.\n- Allow benchmarks to take no argument, int, or double.\n- Fix the PrettyInt printer for negative integers.\n- Modify the max column width name to include the whole name including\n  the arg part.\n- Reformat property_benchmark.cpp in line with the rest of the code.\n- Modify a few of the math benchmarks to take an argument instead of\n  separate benchmarks for the same function with different args.\n- Create a vector of regex_t structs to represent the args all at\n  once instead of when running each benchmark.\n\nThis change is in preparation for adding new math based benchmarks.\n\nTested by running on a nexus flo running at max using the new code\nand the old code and comparing. All of the numbers are similar, but\nsome of the iterations are different due to the slightly different\nalgorithm used.\n\nChange-Id: I57ad1f3ff083282b9ffeb72e687cab369ce3523a\n"
    },
    {
      "commit": "212e0e38248860b151b28877225629a988d95b58",
      "tree": "f43f3b8bc2472d2584750052171a0d6da5277e25",
      "parents": [
        "076f69d828cfa5d30360e1dd2f24acd751d4a461"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 01 16:43:51 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 01 16:43:51 2014 -0800"
      },
      "message": "Build our benchmarks against glibc too.\n\nBug: 18556607\nChange-Id: I455ac8b93c0835836180e549486bc52d393ee6a6\n"
    },
    {
      "commit": "7086ad6919feb2415c6027163f5c63323bcca27c",
      "tree": "f32c06d513e90ba1fcb8fe56f9cd055cccc7d01b",
      "parents": [
        "d1bf37780d0bcaca3e6046171f958ebfea34bde1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 19 16:39:01 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 20 09:06:57 2014 -0700"
      },
      "message": "Cache getpid.\n\nIn practice, with this implementation we never need to make a system call.\nWe get the main thread\u0027s tid (which is the same as our pid) back from\nthe set_tid_address system call we have to make during initialization.\nA new pthread will have the same pid as its parent, and a fork child\u0027s\nmain (and only) thread will have a pid equal to its tid, which we get for\nfree from the kernel before clone returns.\n\nThe only time we\u0027d actually have to make a getpid system call now is if\nwe take a signal during fork and the signal handler calls getpid. (That,\nor we call getpid in the dynamic linker while it\u0027s still dealing with its\nown relocations and hasn\u0027t even set up the main thread yet.)\n\nBug: 15387103\nChange-Id: I6d4718ed0a5c912fc75b5f738c49a023dbed5189\n"
    },
    {
      "commit": "b27a840f4b520bfa095db99b0a2e5205634b0003",
      "tree": "c27682ed0b5e301cbe0aa49dfd6ada3e1bef9eae",
      "parents": [
        "0ada9388e74693d990bdbb4af92c33bae8b34d4b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 10 20:47:49 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 11 16:32:10 2014 -0700"
      },
      "message": "Add __pure2 to a few more functions, most notably gettid and pthread_self.\n\nChange-Id: I7eee9f26f45130038af09d8285782b07f70a996f\n"
    },
    {
      "commit": "7634db5a0657129225869c3650a992f9cbe82fe4",
      "tree": "617de0c37e9aa44208fe50173ca7809c98680ada",
      "parents": [
        "2b8246fa755cf3e2828d702b6c27c2d238395fad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 09 18:35:21 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 09 18:35:21 2014 -0700"
      },
      "message": "Add a couple more system call benchmarks.\n\nBug: 15387103\nChange-Id: I13419ddf77d201fdbde4c784259c0cb0dcfb9a77\n"
    },
    {
      "commit": "5d9a7ba0dc9c24ed4e4efa9cac0e796fd524b308",
      "tree": "4674df3b5064cb38211453b6e887c364f0c66f05",
      "parents": [
        "831405b749d15a11fb947a40d61fd858e952d860"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 30 19:00:03 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 02 10:32:55 2014 -0700"
      },
      "message": "Avoid a system call in \u0027gettid\u0027.\n\nSystem calls can be pretty slow. This is mako, which has one of our\nlowest latencies:\n\n                       iterations      ns/op\n  BM_unistd_getpid       10000000        209\n  BM_unistd_gettid      200000000          8\n\nBug: 15297299 (kernel panic from too many gettid calls)\nBug: 15315766 (excessive gettid overhead in liblogd)\nChange-Id: I49656c0fc5b5d092390264a59e4f2c0d8a8b1aeb\n"
    },
    {
      "commit": "b28e490b7350b21c5ae9e5b3bb3e082d8357a1b0",
      "tree": "0b14163dbc4e3dea19c9b81aa2f33096a856dac4",
      "parents": [
        "10f6beb3eb46cb2488427f58dccdd7bbfab5a250"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 11 11:19:06 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 11 11:20:52 2014 -0700"
      },
      "message": "Add various benchmarks.\n\nThese are based on ones from system/extras/tests/bionic/.\n\nChange-Id: I7b1ae15a2ca5d1031a6a511d97b88125c1770047\n"
    }
  ]
}
