<commit_before># JMH Visualizer

Visually explore your [JMH](http://openjdk.java.net/projects/code-tools/jmh/) Benchmarks! Online version at http://jmh.morethan.io!

Comes with 2 companion projects:
- [Gradle plugin](https://github.com/jzillmann/gradle-jmh-report)
- [Jenkins plugin](https://github.com/jenkinsci/jmh-report-plugin)

*Note:* This plugin is not for executing benchmarks, its for reporting on already executed benchmarks. There are multiple ways how you can setup your JMH benchmark execution in Gradle, i've written in this [blog post](https://blog.morethan.io/jmh-with-gradle-from-easy-to-simple-dc872d57cf7f) about it!

## Features

- Serverless architecture - All happens locally in your browser
- Vizualize the benchmarks of a single JSON result 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
  - Vertical bar-chart from -100% to 100%
  - Link to the original JSON
  - Show score and error of both runs in tooltip
- Visualize secondary metrics like '·gc.alloc.rate'
- Focus on individual charts with synced axis scales

## Major Changes

- **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](https://github.com/jzillmann/jmh-visualizer/issues) and/or open [pull requests](https://github.com/jzillmann/jmh-visualizer/pulls)!

#### 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!
<commit_msg>Remove last readme addition as it went to the wrong project ;)<commit_after># JMH Visualizer

Visually explore your [JMH](http://openjdk.java.net/projects/code-tools/jmh/) Benchmarks! Online version at http://jmh.morethan.io!

Comes with 2 companion projects:
- [Gradle plugin](https://github.com/jzillmann/gradle-jmh-report)
- [Jenkins plugin](https://github.com/jenkinsci/jmh-report-plugin)

## Features

- Serverless architecture - All happens locally in your browser
- Vizualize the benchmarks of a single JSON result 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
  - Vertical bar-chart from -100% to 100%
  - Link to the original JSON
  - Show score and error of both runs in tooltip
- Visualize secondary metrics like '·gc.alloc.rate'
- Focus on individual charts with synced axis scales

## Major Changes

- **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](https://github.com/jzillmann/jmh-visualizer/issues) and/or open [pull requests](https://github.com/jzillmann/jmh-visualizer/pulls)!

#### 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!

{'fraction_non_alphanumeric': 0.09442653155228005, 'fraction_numerical': 0.015046829418086903, 'mean_word_length': 4.022359290670779, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 9, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3153449', 'n_tokens_mistral': 1998, 'n_tokens_neox': 1780, 'n_words': 840}