)]}'
{
  "log": [
    {
      "commit": "e4d5efe231bd942fe661a066d9d5c895e950f248",
      "tree": "7b1787b1a32199354d1aaa61de8c2e0a0fd9204d",
      "parents": [
        "a9ebf6f422c1924b3c6486385babc38152c39500"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 18 17:57:38 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 06 14:55:00 2021 -0800"
      },
      "message": "strftime: format small positive integers ourselves.\n\nA decent chunk of the logcat profile is spent formatting the timestamps\nfor each line, and most of that time was going to snprintf(3). We should\nfind all the places that could benefit from a lighter-weight \"format an\ninteger\" and share something between them, but this is easy for now.\n\nBefore:\n\n-----------------------------------------------------------\nBenchmark                 Time             CPU   Iterations\n-----------------------------------------------------------\nBM_time_strftime        781 ns          775 ns       893102\n\nAfter:\n\n-----------------------------------------------------------\nBenchmark                 Time             CPU   Iterations\n-----------------------------------------------------------\nBM_time_strftime        149 ns          147 ns      4750782\n\nMuch of the remaining time is in tzset() which seems unfortunate.\n\nTest: treehugger\nChange-Id: Ie0f7ee462ff1b1abea6f87d4a9a996d768e51056\n"
    },
    {
      "commit": "6f9c35ded294ca7b0b8f9042f705cbfca1ec8518",
      "tree": "0e6baac52e0ddd5b8d6fe250285db3484728efe0",
      "parents": [
        "6ffa10f4830f7831453b1051e7b86358a728240f"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 07 13:48:46 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Dec 07 09:41:31 2017 -0800"
      },
      "message": "bionic: benchmark: add clock_getres performance tests\n\nProvide a means to check vdso kernel performance for all reasoned\ncombinations of clock_getres, same set of ids as clock_gettime.\n\nAdd to suites/vdso.xml\n\nTest: /data/nativetest{64}/bionic-benchmarks-tests/bionic-benchmarks-tests\n      /data/benchmarktest{64}/bionic-benchmarks/bionic-benchmarks \\\n        --bionic_xml\u003dvdso.xml --benchmark_filter\u003dBM_time_clock_getres*\nBug: 63737556\nChange-Id: I11ea200f67aec2a2f6ad9284960f2941298da222\n"
    },
    {
      "commit": "6ffa10f4830f7831453b1051e7b86358a728240f",
      "tree": "231cce187b4d866b5192f7bd9e5d5b9f04695ea4",
      "parents": [
        "78b40e8fe1f37de319344c92d8e6e1eb595c1067"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 07 13:47:48 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Dec 07 09:41:13 2017 -0800"
      },
      "message": "bionic: benchmark: additional clock_gettime performance tests\n\nProvide a means to check vdso kernel performance for each of\nCLOCK_MONOTONIC (current), CLOCK_MONOTONIC_COARSE,\nCLOCK_MONOTONIC_RAW, CLOCK_REALTIME, CLOCK_REALTIME_COARSE,\nCLOCK_BOOTTIME.\n\nAdd a suites/vdso.xml to select subset of tests impacted by\nvdso implementations.\n\nTest: /data/nativetest{64}/bionic-benchmarks-tests/bionic-benchmarks-tests\n      /data/benchmarktest{64}/bionic-benchmarks/bionic-benchmarks \\\n        --bionic_xml\u003dvdso.xml --benchmark_filter\u003dBM_time_clock_gettime*\nBug: 63737556\nChange-Id: Ibc48e838e50929527ce8d221dd1a608bf185cbc2\n"
    },
    {
      "commit": "a7b0f8899790198cd9e72950f481679fe31e1a92",
      "tree": "4167c3afc82ffb281f43ef2332a60c675f121e43",
      "parents": [
        "0d6485eca47f0e860486795b2da97679948fd5d5"
      ],
      "author": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Mon Jul 24 20:01:13 2017 -0700"
      },
      "committer": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Mon Aug 07 13:16:09 2017 -0700"
      },
      "message": "Implement interface for bionic benchmarks.\n\nTest: Unit tests.\nChange-Id: Ic61932f61ddd572e2f045b601f9da6e090cdc45d\n"
    },
    {
      "commit": "ea87716696bf635706b6f3fa56b8a145add83aff",
      "tree": "9d8552a565789486c9d0f7e9057815924c946b90",
      "parents": [
        "940d460f59e566f2d84ea3e114074a50996e76b3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 11 14:34:16 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 11 14:56:04 2017 -0800"
      },
      "message": "localtime_r(3) should act as if it calls tzset(3).\n\nSee code comment.\n\nBug: http://b/31339449\nTest: ran tests \u0026 benchmarks\nChange-Id: I6b6a63750ef41664dc4698207e6a53e77cc28cdf\n"
    },
    {
      "commit": "281e06ba69ce6f591697acf65a24651050809920",
      "tree": "c2a4caf009b63e8be398ef3da1f0e792f41c9746",
      "parents": [
        "925bf56447cf87da910441f12b302051e07549ba"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 17 10:23:52 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 07 13:50:50 2016 -0800"
      },
      "message": "Switch bionic over to google-benchmark.\n\nAlso removes the old benchmarking library.\n\nChange-Id: I4791ae69fa5dea03644d3d411c60b7c6d1fceae3\n"
    },
    {
      "commit": "3fe1515e38d169c4d6570b5423f45ae5bfb46f2a",
      "tree": "6675c20e3c7b0cdb09e843f6b23cbca3c0e35fb1",
      "parents": [
        "a3c01467ecf31cab1410ce7b8554e2e77dae3309"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Aug 11 16:46:26 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Aug 11 16:46:26 2015 -0700"
      },
      "message": "Add missing include.\n\nlibc++ cleaned up a leaky header.\n\nChange-Id: I5ac0f43a075257a9138a82be379c9cffe96e0ab9\n"
    },
    {
      "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": "905e6d58aaf515bf237e62078f8a321920fe4c6b",
      "tree": "07ee9fad11490db7e30bc27e359d5d1adf950cef",
      "parents": [
        "123172ae370fe51e2d1fc26fe0aafa095af52919"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 25 11:55:59 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 25 12:03:51 2014 -0700"
      },
      "message": "Start hiding \"private/bionic_time.h\".\n\nBug: 15765976\nChange-Id: Ibd9cf07067ec8dffe9fda6c3d498d4ab90708220\n"
    },
    {
      "commit": "625993dfbb085a3cde7492eda8ec1cdc1ee39a78",
      "tree": "4385fee1dde6d90f42c616a2afc6766824f72835",
      "parents": [
        "770d0f6177ca1ad242b509151fb612f07ef8a07b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 15 16:53:13 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 16 14:27:43 2014 -0700"
      },
      "message": "Use VDSO for clock_gettime(2) and gettimeofday(2).\n\nBug: 15387103\nChange-Id: Ifc3608ea65060c1dc38120b10b6e79874f182a36\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": "bd3efbc9b585e0c9801b0b35f282347cb8692ca8",
      "tree": "ee91fc952e907515d959f80a55de157318ad124a",
      "parents": [
        "05ec00bf62ac168c9787a3d0640879ab3e502fe5"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 15 17:49:47 2013 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Dec 10 18:24:30 2013 -0800"
      },
      "message": "bionic: move benchmarks out of tests directory\n\nChange-Id: I4d054965198af22c9a9c821d1bc53f4e9ea01248\n"
    },
    {
      "commit": "4a05bef4c06dac05f1c9aa8cfc5b7e7dd6642385",
      "tree": "493815df9e9ddc9b5ce10780ef416eda8d7bb6e2",
      "parents": [
        "62c5cd0781e95c1c50b63c37a9a87bc158e64d38"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 11 17:17:02 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 11 17:17:02 2013 -0700"
      },
      "message": "Cache the most-recently used timezone for mktime_tz and localtime_tz.\n\nNormally, the C library implicitly caches your timezone by virtue\nof the fact that the prehistoric API assumes a single timezone for\nthe entire process.\n\nThe unfortunate mktime_tz and localtime_tz extensions work around\nthis, but represent timezones as strings to their callers, so code\nthat makes heavy use of these needs a cache to be able to perform\nacceptably until it can hopefully one day be rewritten to use\njava.util.Calendar or icu4c.\n\nBug: 8270865\nChange-Id: I92e3964e86dc33ceac925f819cc5e26ff4203f50\n"
    }
  ]
}
