kennedyoliveira / jmh-visualizer

Visually explore your JMH Benchmarks

Home Page:http://jmh.morethan.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

JMH Visualizer

Visually explore your JMH Benchmarks! Online version at http://jmh.morethan.io!

Comes with 2 companion projects:

Features

  • Serverless architecture - All happens locally in your browser
  • Visualize the benchmarks of a single run (one JSON file) grouped by benchmark class
    • Vertical bar-chart with score and score error
    • Link to the original JSON
    • Show individual runs as tooltip
  • Compare the benchmarks of 2 runs (two JSON files) grouped by benchmark class
    • Summary of noteable changes
    • Vertical bar-chart from -100% to 100%
    • Link to the original JSON
    • Show score and error of both runs in tooltip
  • Compare the benchmarks of multiple runs (n JSON files) grouped by benchmark class
    • Summary of noteable changes
    • Line chart
    • Show score and error on hover
  • Visualize secondary metrics like '·gc.alloc.rate'
  • Focus on individual charts with synced axis scales
  • Load benchmarks from external url

Major Changes

  • Jan 2018 - 0.7.3 External URL/Gist support
  • Okt 2017 - 0.7 Multi-Run support
  • Aug 2017 - 0.6 Layout change & Summary support
  • Jul 2017 - 0.5 Focussing of benchmarks
  • May 2017 - 0.4 Secondary Metrics support
  • Apr 2017 - 0.3 Error Bars & Params support
  • Nov 2016 - 0.2: Add 2 run compare view
  • Okt 2016 - 0.1: Initial Release

Tips & Tricks

While this app will visualize any valid JMH JSON you throw at it, you can write your benchmarks in a way that make the visualization much more enjoyable...

  • Put those benchmarks in a single class which you most likely wanne compare to each other
  • On the other hand, don't put to much stuff in a single class/chart (since readability will suffer) - deconstruct
  • Don't mix incompatible benchmark styles into one class (like mixing average and single shot is ok, but mixing avarage and throughput doesn't make much sense)
  • Sensibly design your package structure, your class name and you methods names, those are reflected in the auto-generated charts
  • Keep method names short but meaningful
  • The method names reflect initial sort, so if you have benchmarks called 'with1Threads, with10Threads' naming them 'with01Thread, with10Thread' will display nicer

Contribute

Use the issue tracker and/or open pull requests!

Useful Commands

  • npm install Download all necessary npm packages
  • npm run lint Lint the javascript files
  • npm run test Run tests
  • npm run check Run Lint & Test
  • npm run watch Continuously build the project
  • open build/index.html Open the build project in your default browser
  • npm run release Build production version
  • npm run deploy Build production version & move it to the github pages fodler

Realease

  • Increase version in package.json
  • Update README.md in case of major releases
  • npm run deploy
  • commit & push
  • tag with
    • git tag -a $releaseVersion -m "$releaseVersion release"
    • git push --tags

Credits

http://recharts.org/ - The chart ground work

http://www.favicon.cc/ - Created the favicon with

Babel, webpack, react,... and many more for an enjoyable webstack!

Donating

Support this project and other work from me: Support via PayPal

About

Visually explore your JMH Benchmarks

http://jmh.morethan.io

License:GNU Affero General Public License v3.0


Languages

Language:JavaScript 99.3%Language:CSS 0.6%Language:HTML 0.1%