gobenchdata

📉 Run Go benchmarks, publish results to an interactive web app, and check for performance regressions in your pull requests

MIT License

Stars
142
Committers
6
gobenchdata - v1.3.1 Latest Release

Published by bobheadxi over 1 year ago

  • deps: various dependency upgrades

Full Changelog: https://github.com/bobheadxi/gobenchdata/compare/v1...v1.3.1

gobenchdata - v1.3.0

Published by bobheadxi almost 2 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/bobheadxi/gobenchdata/compare/v1.2.2...v1.3.0

gobenchdata - v1.2.2

Published by bobheadxi almost 2 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/bobheadxi/gobenchdata/compare/v1...v1.2.2

gobenchdata - v1.2.1

Published by bobheadxi over 2 years ago

What's Changed

Full Changelog: https://github.com/bobheadxi/gobenchdata/compare/v1...v1.2.1

gobenchdata - v1.2.0

Published by bobheadxi over 2 years ago

What's Changed

Full Changelog: https://github.com/bobheadxi/gobenchdata/compare/v1...v1.2.0

gobenchdata - v1.1.0

Published by bobheadxi over 2 years ago

What's Changed

Full Changelog: https://github.com/bobheadxi/gobenchdata/compare/v1...v1.1.0

gobenchdata - v1.0.4

Published by bobheadxi over 2 years ago

View Action Demo

For more details about recent changes, see the v1.0.0 release.

What's Changed

  • bench: evaluate mem.BytesPerOp, mem.AllocsPerOp as float64 by @bobheadxi in https://github.com/bobheadxi/gobenchdata/pull/58 - this fixes checks defined on mem.BytesPerOp and mem.AllocsPerOp involving division incorrectly evaluating to a truncated integer value.

Full Changelog: https://github.com/bobheadxi/gobenchdata/compare/v1...v1.0.4

gobenchdata - v1.0.3

Published by bobheadxi over 2 years ago

View Action Demo

For more details about recent changes, see the v1.0.0 release.

What's Changed

Full Changelog: https://github.com/bobheadxi/gobenchdata/compare/v1...v1.0.3

gobenchdata - v1.0.2

Published by bobheadxi almost 3 years ago

View Action Demo

For more details about recent changes, see the v1.0.0 release.

What's Changed

New Contributors

Full Changelog: https://github.com/bobheadxi/gobenchdata/compare/v1.0.1...v1.0.2

gobenchdata - v1.0.1

Published by bobheadxi over 4 years ago

This release fixes a bug where checks would fail when no base benchmarks have been recorded.

View Action Demo

For more details about recent changes, see the v1.0.0 release.

gobenchdata - v1.0.0

Published by bobheadxi over 4 years ago

This release brings some big new features :)

View Action Demo

:shipit: Improved Publishing

  • ⚠️ Breaking change - PUBLISH: true must now be set to enable publishing
    • to continue using older versions of gobenchdata please pin your workflow to use bobheadxi/[email protected]!
  • Publish results to any branch in any repository with PUBLISH_REPO and PUBLISH_BRANCH (just make sure env.GITHUB_TOKEN has the necessary permissions)
    • these are optional - the default behaviour remains the same (pushes to the host repository's gh-pages branch)
    - name: gobenchdata publish
      uses: bobheadxi/gobenchdata@v1
      with:
        PRUNE_COUNT: 30
        PUBLISH: true
        PUBLISH_REPO: bobheadxi/gobenchdata-v1-demo
        PUBLISH_BRANCH: master
      env:
        GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}

✅ Checks

You can now define checks on benchmark results and check for regressions in pull requests.

  • Configure checks with gobenchdata-checks.yml - get started with gobenchdata checks generate
    • define your own arithmetic for interpreting results - for example:
      diff: (current.NsPerOp-base.NsPerOp) / base.NsPerOp * 100
      thresholds:
            max: 10
  • Run checks locally or in GitHub Actions
    • locally: gobenchdata checks eval - output can be output nicely with --checks.pretty, or saved with --json
      • JSON reports can be summarized with gobenchdata checks report
    • in GitHub Actions:
    - name: gobenchdata checks
      uses: bobheadxi/gobenchdata@v1
      with:
        GO_TEST_FLAGS: -cpu 1,2
        CHECKS: true
        CHECKS_CONFIG: ./demo/gobenchdata-checks.yml
        PUBLISH_BRANCH: master
      env:
        GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}

📉 New Web Application

The web application has been rewritten from the ground up!

  • Now embedded in the core gobenchdata CLI
    • try it out with gobenchdata web serve!
    • generate a new app with gobenchdata web generate ./app
  • Improved visualizations
    • charts are now built with ApexCharts, which brings built-in chart navigation, image generation, clearer tooltips, and more
  • Improved configuration
    • define groups of charts, specify benchmarks and metrics to display, and include instructions for interpretation with the new gobenchdata-web.yml configuration format

Migrating from v0.5.x

Existing Actions

- uses: bobheadxi/[email protected]
+ uses: bobheadxi/gobenchdata@v1
with:
+ PUBLISH: true

Regenerating the Web App

Copy the title and description you are using to a temporary file. Delete app.js, index.html, style.css. Then:

go get -u go.bobheadxi.dev/gobenchdata
gobenchdata web generate . --web.title="My title"

Then, in gobenchdata-web.yml, add your description to the description field. Without configuring any chartGroups, the web app should generate similar charts to before - to start customizing, add some entries to chartGroups!

gobenchdata - v0.5.1

Published by bobheadxi over 4 years ago

x/web

  • update ChartJS to v2.9.3
  • fix bug with generating charts on custom benchmarks
gobenchdata - v0.5.0

Published by bobheadxi over 4 years ago

View Action Demo

x/web

  • add --per-benchmark flag to disable grouping benchmarks by package (#30 by @JRascagneres)
  • if no commit information is provided, a link is no longer generated (#24)

misc

  • improvements to the action image (#23)
  • documentation improvements, links to examples
gobenchdata - v0.4.1

Published by bobheadxi about 5 years ago

Minor patch - see v0.4.0 for full changelog!

x/web

  • fix link to gobenchdata GitHub action
gobenchdata - v0.4.0

Published by bobheadxi about 5 years ago

View Action Demo

This release is a pretty significant update that brings the gobenchdata action in line with the new GitHub Actions features and format! 🎉 Highlights of this release include:

action

  • new name ("Continuous Benchmarking for Go") because GitHub won't let me publish under the old one 😢
  • configuration is now via inputs rather than env, as defined in action.yml
  • improved configuration output during run
  • new configuration options like SUBDIRECTORY

gobenchdata

  • support for custom metrics out of the box (new metrics are added to the field Benchmark.Custom)
  • fixed support for metrics that output float values

x/gobenchdata-web

  • support for custom metrics when generating new web apps using the --charts-types option (e.g. -c bytes/op,allocs/op,custom/op)
  • support for canonical imports with --source and --canonical-import
  • guidelines now appear on hover for runs
  • tweaked styling
  • fixed support for new benchmarks (previously, new benchmarks would not render)

docs

  • new and better examples using the new YAML format for workflows

For more details refer to the full diff.

gobenchdata - v0.3.0

Published by bobheadxi over 5 years ago

The new import path is now:

go get go.bobheadxi.dev/gobenchdata/...
gobenchdata - v0.2.1

Published by bobheadxi over 5 years ago

x/gobenchdata-web

  • allow HTML in description (--desc)
gobenchdata - v0.2.0

Published by bobheadxi over 5 years ago

gobenchdata

  • new --prune option (in the Action, PRUNE) for automatically removing old benchmarks

x/gobenchdata-web

  • new --desc option when generating app
  • new --root-import option to allow:
  • package names to link to github
  • data points to link to specific commits
  • improved formatting and spacing

all changes: diff

gobenchdata - v0.1.0

Published by bobheadxi over 5 years ago

gobenchdata

  • more manageable storage format with --flat
  • bug fixes

x/gobenchdata-web

  • significant improvements in charts and generation

all changes: diff

gobenchdata - v0.0.4

Published by bobheadxi over 5 years ago

Fix up a typo in the description. OOps