)]}'
{
  "log": [
    {
      "commit": "e8693e78711e8f45ccd2b610e4dbe0b94d551cc9",
      "tree": "5b7a67244a6a122e27fca20f84d0a4f78d487fe2",
      "parents": [
        "9aa6b15d799ac246e842552fca555920a93ce46b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 22 13:43:59 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 22 13:43:59 2020 -0700"
      },
      "message": "Make more use of benchmark::DoNotOptimize in benchmarks.\n\nA lot of these benchmarks predate DoNotOptimize and rolled their own\nhacks.\n\nBug: http://b/148307629\nTest: ran benchmarks before \u0026 after and got similar results\nChange-Id: If44699d261b687f6253af709edda58f4c90fb285\n"
    },
    {
      "commit": "ba1a723ad111018a1de7992032dabef8c87b15d7",
      "tree": "8e83fddc57fb9431f66fbf966de612d3c83ffc58",
      "parents": [
        "f1e657cdff25541959e1a81e0894bc4245d8e9d1"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Nov 14 15:19:53 2018 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Nov 14 15:46:49 2018 -0800"
      },
      "message": "switch to using android-base/file.h instead of android-base/test_utils.h\n\nTest: compile\nBug: 119313545\nChange-Id: I664fb32522d01909c603d7b903475c4e9aea9223\n"
    },
    {
      "commit": "32bc0fcf69dfccb3726fe572833a38b01179580e",
      "tree": "abca656f500087493e0997d5cf38cbcc9ec98eb8",
      "parents": [
        "65f82092a17518080178ff7004cc6db362ebfbcd"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 17:31:13 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 18:09:44 2018 -0700"
      },
      "message": "Modernize codebase by replacing NULL with nullptr\n\nFixes -Wzero-as-null-pointer-constant warning.\n\nTest: m\nBug: 68236239\nChange-Id: I5b4123bc6709641315120a191e36cc57541349b2\n"
    },
    {
      "commit": "5cec377f49d6429b19895eb632225cd757ea611e",
      "tree": "bcd08fe1e6b656a5a4e235a225fbe88feb54a112",
      "parents": [
        "0d63a3c233040af004cc470d5f76547f3adc0148"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:45:23 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:56:12 2018 -0800"
      },
      "message": "Address a bunch of clang-tidy complaints.\n\nThere were a bunch more unreasonable/incorrect ones, but these ones\nseemed legit. Nothing very interesting, though.\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: If66971194d4a7b4bf6d0251bedb88e8cdc88a76f\n"
    },
    {
      "commit": "7063a838be5eb1f28f40a554944a31bab49c3211",
      "tree": "6f498b51428018eac4a519f7624b9e8131433433",
      "parents": [
        "721a5305e24b69b68ecc9431526f32131abc8f6c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 19 08:55:40 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 19 08:55:40 2017 -0800"
      },
      "message": "More benchmarks.\n\nAdd a hand-rolled maps line parser as something to compare our realistic\nsscanf benchmark against. Also add benchmarks for the ato*/strto* family.\n\nThis patch doesn\u0027t fix the tests, which seem to have been broken by\nthe recent google-benchmark upgrade despite the benchmarks themselves\nall working just fine. To me that\u0027s a final strike against these tests\nwhich are hard to maintain and not obviously useful, but we can worry\nabout what to do with them -- whether to just delete them or to try to\nturn them into tests that actually have some value -- in a separate CL.\n\nBug: N/A\nTest: ran benchmarks\nChange-Id: I6c9a77ece98d624baeb049b360876ef5c35ea7f2\n"
    },
    {
      "commit": "3b644e932a9a1e9f08ce27002c9a2803d5d74ef6",
      "tree": "15e60803da99f7b6802a90885fa60e1b5ee2ba41",
      "parents": [
        "4940a24a1146f3a3f03925ebc1b090028e42e49f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 11 14:43:52 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 11 14:46:22 2017 -0800"
      },
      "message": "Trivial scanf benchmarks.\n\nBug: http://b/68672236\nTest: ran benchmarks\nChange-Id: I96514be5e67969b65205e953051c524be3626ec4\n"
    },
    {
      "commit": "858e33698d947a686fa59ed0206ce7c6656d3439",
      "tree": "74da61c257264c74bb683c5a7d7e0d387b53ac50",
      "parents": [
        "27d4977f1f4d0b4cbd67bd0cfc29d4d8cfff96f1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 30 08:53:15 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 30 09:09:41 2017 -0800"
      },
      "message": "Generate all the benchmarks to run.\n\nInstead of requiring the need to maintain a list of all the benchmarks,\nadd a programmatic way to generate all of the benchmarks.\n\nThis generation runs the benchmarks in alphabetical order.\n\nAdd a new macro BIONIC_BENCHMARK_WITH_ARG that will be the default argument\nto pass to the benchmark. Change the benchmarks that require default arguments.\n\nAdd a small example xml file, and remove the full.xml/host.xml files.\n\nUpdate readme.\n\nTest: Ran new unit tests, verified all tests are added.\nChange-Id: I8036daeae7635393222a7a92d18f34119adba745\n"
    },
    {
      "commit": "5305a4d4a723b06494b93f2df81733b83a0c46d3",
      "tree": "e2de767071618925487ca8b8ba2da4d7aac62fce",
      "parents": [
        "232541aa02e22ab8fafcdd503c74aae22fa09699"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 03 14:00:37 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 03 14:19:00 2017 -0700"
      },
      "message": "10x printf speedup.\n\nAndroid is UTF-8. Don\u0027t make everyone pay to convert UTF-8 to ASCII just\nso we can recognize \u0027%\u0027. With UTF-8 we can just strchr forwards.\n\nBefore:\n\n  ---------------------------------------------------------------\n  Benchmark                        Time           CPU Iterations\n  ---------------------------------------------------------------\n  BM_stdio_printf_literal       1290 ns       1290 ns     442554\n  BM_stdio_printf_s             1204 ns       1204 ns     582446\n  BM_stdio_printf_d             1206 ns       1206 ns     578311\n  BM_stdio_printf_1$s           2263 ns       2263 ns     310002\n\nAfter:\n\n  ---------------------------------------------------------------\n  Benchmark                        Time           CPU Iterations\n  ---------------------------------------------------------------\n  BM_stdio_printf_literal        178 ns        178 ns    3394001\n  BM_stdio_printf_s              246 ns        246 ns    2850284\n  BM_stdio_printf_d              252 ns        252 ns    2778610\n  BM_stdio_printf_1$s            363 ns        363 ns    1929011\n\nAdd missing __find_arguments error checking to the wide variant to match\nthe regular one.\n\nAlso replace various char/wchar_t differences with the macro.\n\nBug: http://b/67371539\nTest: ran tests\nChange-Id: I18f122009c22699943ab5d666a98ea594a972c40\n"
    },
    {
      "commit": "928059907bb5d594472687d1d05266158d317bb8",
      "tree": "afafcf66e8c2f9cc80a01643ae20cfd7f88d95ad",
      "parents": [
        "c6291b081d2089ba7a16d7777fb2713d828d537f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 26 15:41:49 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 26 15:43:34 2017 -0700"
      },
      "message": "Add basic printf benchmarks.\n\nBug: http://b/67371539\nTest: ran benchmarks\nChange-Id: I6ad05540079776b2df4cc8d9c02440c61e42037d\n"
    },
    {
      "commit": "938bece9e0c5d7d67d137dbfbba1e2d244c95b35",
      "tree": "cb655541a4b96f3af5c854a80793af05833235b5",
      "parents": [
        "57e07a150e536f79d78f8203b0c807087b5c854b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 23 09:52:50 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 23 14:03:43 2017 -0700"
      },
      "message": "Benchmark fgetln(3) and getline(3) as well as fgets(3).\n\nOn Pixel 2016, there\u0027s about 1us overhead for getline versus\nfgets. fgetln(3) is worse still because of the intermediate buffering\n(though it might actually be better if you were only reading one line\nwhose length was less than BUFSIZ).\n\nAlso use somewhat realistic input for these benchmarks: /dev/zero makes\nno sense at all.\n\nBug: N/A\nTest: ran benchmarks\nChange-Id: I4a319825a37ac3849014c4c6b31523c1e200c641\n"
    },
    {
      "commit": "d706fe5f9e83707901389914c77afa69c19e07e6",
      "tree": "dffb701fa9e822f6c45c2d14d711e51d1701e22a",
      "parents": [
        "096fa4497c50cffdb56f06d7038adbeb3c1254d6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 22 15:26:07 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 23 00:05:21 2017 +0000"
      },
      "message": "Fix the stdio fwrite benchmark.\n\nCan\u0027t write to a read-only file. (Mode \"rw\" isn\u0027t meaningful, but isn\u0027t\nconsidered an error by any libc I know of.)\n\nBug: http://b/64585477\nTest: ran benchmarks\nChange-Id: Ifec1d68414bfc8f3cc8d7f912cb135dccb2e7a41\n"
    },
    {
      "commit": "a98a5fb63ee00bbd7f1663192453efcdf117cb92",
      "tree": "ca3ade0c20e9bb89f76e4ae37e9d3fde00a264f1",
      "parents": [
        "ac4f4b43a3d19f40fc1138c5f78a3d5afd535935"
      ],
      "author": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Wed Aug 09 16:52:19 2017 -0700"
      },
      "committer": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Wed Aug 09 17:24:13 2017 -0700"
      },
      "message": "Improve error handling and fix minor bugs in bionic benchmarks.\n\nTest: Unit tests.\nChange-Id: I224ae4c7f195176eb8a87deddb2debcbf0f24ba3\n"
    },
    {
      "commit": "ac4f4b43a3d19f40fc1138c5f78a3d5afd535935",
      "tree": "383382ddc413b182c7b84cab5c2e47004bfd9470",
      "parents": [
        "a7b0f8899790198cd9e72950f481679fe31e1a92"
      ],
      "author": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Tue Aug 08 18:29:51 2017 -0700"
      },
      "committer": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Wed Aug 09 15:26:37 2017 -0700"
      },
      "message": "Add musl benchmarks.\n\nTest: Unit tests.\nChange-Id: Ifb2911825f84b95fe64a803bfabd32fb81210eae\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": "be763d85c881b58754e650192204e8a2309660cb",
      "tree": "09175cceb1d28d140993c687b4c89abfeac2763d",
      "parents": [
        "b3321c961452f69650e4a6bd2a7db317a80b3234"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Mon Nov 14 14:16:08 2016 +0100"
      },
      "committer": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Tue Nov 15 09:07:11 2016 +0100"
      },
      "message": "Fix deprecated range_x() calls.\n\nTest: builds with new libbenchmark.\nChange-Id: I91c0e5c1b5cf75b8e551f3c59d83ac9352817c4a\n"
    },
    {
      "commit": "1a5fd9c155be65d49d51cd511097541897f4bb37",
      "tree": "79624b48b2b47956a8426a2f80e407ce0f56bcac",
      "parents": [
        "74669e99ce73da86002fe047c73913427ef1d2a1"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jun 10 11:07:21 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jun 10 15:25:49 2016 -0700"
      },
      "message": "Fix misc-macro-parentheses warnings in bionic.\n\nAdd parentheses around macro arguments used beside operators,\nor use constexpr for simple constants.\nBug: 28705665\n\nChange-Id: I378c8aad92d3ec8e8c4b0440b5c2c99dfe01ce79\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": "c217373bd69c501e5ad30d72df1893ab81c7fd66",
      "tree": "be998650c41a2bf0c46ec626e2e2efafe5fc5987",
      "parents": [
        "fe77d2d0036306eec978eccf7b4db81fa424a2f3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 13 13:18:04 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 13 13:18:04 2015 -0700"
      },
      "message": "Fix unused result errors in bionic.\n\nThis lets us use _FORTIFY_SOURCE\u003d2 on the host.\n\nChange-Id: I69f5ff9834bfd595aae6584104bee10c4d8a5eeb\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": "8c4994bbc1a9a01e34ea92c91eb5b2d1a27bd074",
      "tree": "8b632cea0832373b9cb843427bb5976b3668f1a2",
      "parents": [
        "f374358414812d3e5a45ba75a2b1926693924420"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 20 18:09:05 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 21 10:33:30 2015 -0800"
      },
      "message": "Implement __fsetlocking.\n\nThe old __isthreaded hack was never very useful on Android because all user\ncode runs in a VM where there are lots of threads running. But __fsetlocking\nlets a caller say \"I\u0027ll worry about the locking for this FILE*\", which is\nuseful for the normal case where you don\u0027t share a FILE* between threads\nso you don\u0027t need any locking.\n\nBug: 17154740\nBug: 18593728\nChange-Id: I2a8dddc29d3edff39a3d7d793387f2253608a68d\n"
    },
    {
      "commit": "1cf32f83d3284785c64d3ea66560d23eec915956",
      "tree": "2cf23fe9c573f6f265db968f3569ac952f754289",
      "parents": [
        "481cf21e08a6cbbc686487744f1cb07b6d3f400e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 16 17:08:31 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 16 17:08:31 2015 -0800"
      },
      "message": "Add a benchmark for using stdio to read a file in /proc.\n\nChange-Id: I12517aae19e36b7c022a11e8807aece61bb0cb9c\n"
    },
    {
      "commit": "47dc7c974e71f8d6275288f8137156ce317bf53c",
      "tree": "fddd8c11b64da013a5aa6ef6afc5f7b89f5655f0",
      "parents": [
        "3e6ef3f90285191976a60d7a94287fb0fec1af5d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 01 13:12:18 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 01 13:12:18 2014 -0800"
      },
      "message": "Benchmark fread/fwrite both buffered and unbuffered.\n\nBug: 18556607\nChange-Id: I53905aedcea75fe550d9c423fb701c2c9bf8e831\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"
    }
  ]
}
