{"id":22455699,"url":"https://github.com/theapache64/benchart","last_synced_at":"2025-04-05T16:08:26.070Z","repository":{"id":63276538,"uuid":"566365777","full_name":"theapache64/benchart","owner":"theapache64","description":"📊 A web tool to visualise and compare plain text data. Support Android's Macrobenchmark output","archived":false,"fork":false,"pushed_at":"2025-03-15T19:58:26.000Z","size":14190,"stargazers_count":145,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-29T15:07:57.817Z","etag":null,"topics":["android-benchmark","android-tools","compose-web"],"latest_commit_sha":null,"homepage":"https://a64.in/benchart/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/theapache64.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-15T14:21:25.000Z","updated_at":"2025-03-15T19:57:37.000Z","dependencies_parsed_at":"2023-01-27T14:02:03.606Z","dependency_job_id":"6ca7240c-5b4b-4dc0-82a5-485453775494","html_url":"https://github.com/theapache64/benchart","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theapache64%2Fbenchart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theapache64%2Fbenchart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theapache64%2Fbenchart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theapache64%2Fbenchart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theapache64","download_url":"https://codeload.github.com/theapache64/benchart/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247361691,"owners_count":20926643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-benchmark","android-tools","compose-web"],"created_at":"2024-12-06T07:13:10.424Z","updated_at":"2025-04-05T16:08:26.048Z","avatar_url":"https://github.com/theapache64.png","language":"Kotlin","readme":"![](cover.jpeg)\n\n# 📊 benchart\n\n\u003e A web tool to visualize and compare plain text data with Android Macrobenchmark data support\n\n![](https://img.shields.io/github/deployments/theapache64/benchart/github-pages)\n\u003ca href=\"https://twitter.com/theapache64\" target=\"_blank\"\u003e\n\u003cimg alt=\"Twitter: theapache64\" src=\"https://img.shields.io/twitter/follow/theapache64.svg?style=social\" /\u003e\n\u003c/a\u003e\n\n\n![virat-kohli-ben-stokes](https://github.com/theapache64/benchart/assets/9678279/01381728-1ae2-4124-a4d5-7cc3dd7ba910)\n\n\u003e Yeah, correct, [he](https://en.wikipedia.org/wiki/Virat_Kohli)'s saying \"Benchart\"\n\n## ✨ Demo\n\nhttps://user-images.githubusercontent.com/9678279/204081186-36c7ce90-6c46-4ec6-9c36-dd16cdf25acf.mov\n\n## 🐣 Getting Started\n\nLet's start with some sample log data to learn the basics.\n\n![image](https://github.com/theapache64/benchart/assets/9678279/2cd4f30e-054a-4f1e-b0bf-1443319a50a4)\n\n### 📄 Input\n\n- Benchart accepts input as plain text.\n- A block is a chunk of information that you can compare.\n- Blocks are separated by a blank line.\n- The first line of the block will be treated as the header line. \n  - In the above example, `# before` and `# after`.\n- Remaining lines will be treated as input lines.\n- In an input line, the last number is treated as the value, and anything before that as the key.\n  - For example, given the input line `myFirstFunction() = 90ms`, the key will be `myFirstFunction`, and the value will be `90`.\n- All special characters will be stripped out from all the lines (e.g., `(`, `)`, `=`, `#`).\n\n### 📊 Visualization\n\n- The X-axis of the chart is for keys.\n- The Y-axis of the chart is for values.\n- Headers will be given as legend.\n\n### 💻 Result\n\n- The result compares the blocks and shows 2 states:\n  - `better`: a decrease in value.\n  - `worse`: an increase in value.\n- Each result line shows the change in percentage as well as the change in value.\n\n## 🔃 The Swap\n\nYou can swap the blocks, and the results will also be swapped (see the above example to find the difference).\n\n\u003cimg src=\"https://github.com/theapache64/benchart/assets/9678279/e76ba831-05e1-454a-b39f-6cf10a254b2d\" width=\"500\"/\u003e\n\n## 🧱 Multi-blocks\n\nYou can have `n` number of blocks. The first word of the header will be considered a group. When you have multiple blocks starting with the same word, the result will be the average of those blocks. See the example below.\n\n![image](https://github.com/theapache64/benchart/assets/9678279/f3877308-2d03-4152-b7e1-aec2e244a29c)\n\n## 👥 Auto Group\n\nTo color the same group with the same color on the chart, enable Auto Group.\n\n![image](https://github.com/theapache64/benchart/assets/9678279/c33153ae-affc-4977-8c29-edb468054053)\n\n## ➗ Auto Average\n\nIn a block, if there are multiple lines with the same key, they will be averaged.\n\n![image](https://github.com/theapache64/benchart/assets/9678279/0a6901d0-e042-4f31-893a-0570c6d837e2)\n\n## 🎯 Focus Group\n\nYou'll see a new element called Focus Group when auto average is performed.\n\n![image](https://github.com/theapache64/benchart/assets/9678279/173591ea-018d-44a1-bc2b-8bd6d3dc69c8)\n\nSelecting a group from the Focus Group dropdown will show each value in the chart.\n\n![image](https://github.com/theapache64/benchart/assets/9678279/86cb663c-31c4-433e-b11b-61f9a1ce9e7c)\n\n## 🤖 Android Support\n\nYou can paste your Macrobenchmark result data into the input box, and it'll draw custom charts for each metric.\n\n![image](https://github.com/theapache64/benchart/assets/9678279/768babb9-7cff-4798-840e-46a13009734a)\n\n## ⭐️ Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=theapache64/benchart\u0026type=Date)](https://star-history.com/#theapache64/benchart\u0026Date)\n\n## ✍️ Author\n\n👤 **theapache64**\n\n* Twitter: \u003ca href=\"https://twitter.com/theapache64\" target=\"_blank\"\u003e@theapache64\u003c/a\u003e\n* Email: theapache64@gmail.com\n\nFeel free to ping me 😉\n\n## 🤝 Contributing\n\nContributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.\n\n1. Open an issue first to discuss what you would like to change.\n1. Fork the project.\n1. Create your feature branch (`git checkout -b feature/amazing-feature`).\n1. Commit your changes (`git commit -m 'Add some amazing feature'`).\n1. Push to the branch (`git push origin feature/amazing-feature`).\n1. Open a pull request.\n\nPlease make sure to update tests as appropriate.\n\n## ❤ Show Your Support\n\nGive a ⭐️ if this project helped you!\n\n\u003ca href=\"https://www.patreon.com/theapache64\"\u003e\n  \u003cimg alt=\"Patron Link\" src=\"https://c5.patreon.com/external/logo/become_a_patron_button@2x.png\" width=\"160\"/\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://www.buymeacoffee.com/theapache64\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" width=\"160\"\u003e\n\u003c/a\u003e\n\n## 📝 License\n```\nCopyright © 2024 - theapache64\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n\n_This README was generated by [readgen](https://github.com/theapache64/readgen)_ ❤\n","funding_links":["https://www.patreon.com/theapache64","https://www.buymeacoffee.com/theapache64"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheapache64%2Fbenchart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheapache64%2Fbenchart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheapache64%2Fbenchart/lists"}