Skip to content

Benchmark visualizer: Venz #784

Closed
Closed

Description

@webpro

Hi there!

First of all, thanks a lot for building and maintaining hyperfine, it's a great and omnipresent tool.

Since I had a desire to visualize a range of benchmarks over time in various situations, I thought it might be useful to render charts in the browser for nice "dataviz". So one thing led to another, and an early "local-only" version to try is here: https://try.venz.dev. No data leaves the browser.

Use the flow/form to manage commands and provide titles and colors. Or drop JSON output directly onto https://try.venz.dev/chart (either drop the file, or paste JSON as text). Todo:

  • Render "summary" in chart (to compare benchmarks and see which one is fastest etc)
  • Support other output formats (eg CSV), maybe even also the CLI output itself
  • Improve UX/accessbility

Feel free to provide any kind of feedback or suggest ideas. Better chart types, etc. etc. Anything.

Plenty more ideas I have. Already have a "remote storage" version working (local = IndexedDB, remote = SQLite), and I'm looking for some kind of "on-demand bare metal" cloud solutions to run benchmarks in an isolated and stable environment. End-users would then initiate such runs from the Venz UI, while also allowing more "prepare" and "build" commands, etcetera. I might also start support for other benchmark running tools.

For now, at least we have a public visualizer for hyperfine output. Here's hoping to make running benchmarks more fun and accessible to more people.

By the way, the name Venz is a portmanteau(?) of "bENchmark VisualiZer".

Activity

  1. webpro commented on Dec 19, 2024

    @webpro
    ContributorAuthor

    For anyone interested, I'm building this in public. Follow me on Bluesky for progress updates: https://bsky.app/profile/webpro.nl

  2. sharkdp commented on Dec 21, 2024

    @sharkdp
    Owner

    Wow — this is really cool, thank you for sharing it here! Great idea and very nice execution.

    For anyone interested, I'm building this in public

    Is the project open source too?

    Since I had a desire to visualize a range of benchmarks over time in various situations, I thought it might be useful to render charts in the browser for nice "dataviz".

    Just to be sure: you have seen our visualization scripts at https://github.com/sharkdp/hyperfine/tree/master/scripts?

    Support other output formats (eg CSV), maybe even also the CLI output itself

    Personally, I don't see the need for this. JSON seems like the best fit here?

    Feel free to provide any kind of feedback or suggest ideas. Better chart types, etc. etc. Anything.

    I think the charts could use a bit more polish. I'd like to see axis labels (wow, I just noticed that it does have labels, but the contrast of the font is so low, I didn't see them), a legend (in the chart, not below it), etc.

    One thing I would find very valuable personally would be to edit some of the chart properties interactively. This is something we can't easily do with the Python scripts. For example, I often run a benchmark, store the results, but forget to set a nice label. Being able to adjust the command names would be really neat. And it would be really cool to change colors in the chart view, not before.

    Another thing that would be useful is support for parametrized benchmarks (see --parameter-scan and --parameter-list). These benchmarks often lend themselves well to interesting plotting opportunities.

  3. webpro commented on Dec 22, 2024

    @webpro
    ContributorAuthor

    Wow — this is really cool, thank you for sharing it here! Great idea and very nice execution.

    Thanks! Much appreciated.

    For anyone interested, I'm building this in public

    Is the project open source too?

    Not yet, but it will be.

    Since I had a desire to visualize a range of benchmarks over time in various situations, I thought it might be useful to render charts in the browser for nice "dataviz".

    Just to be sure: you have seen our visualization scripts at https://github.com/sharkdp/hyperfine/tree/master/scripts?

    I glanced over them, but didn't actually try since I figured there wouldn't be too much interactivity and I wanted to play with Solid JS and D3. Also I'm not doing much Python so didn't fancy going through installing things. But I might still try, let me know if there's something of interest.

    Support other output formats (eg CSV), maybe even also the CLI output itself

    Personally, I don't see the need for this. JSON seems like the best fit here?

    Yeah, no priority in supporting more than JSON. Was thinking it could be neat to pipe hyperfine results to clipboard so one can then paste into browser without even adding --export-json [file] but it would obviously miss out on individual data points.

    Feel free to provide any kind of feedback or suggest ideas. Better chart types, etc. etc. Anything.

    I think the charts could use a bit more polish. I'd like to see axis labels (wow, I just noticed that it does have labels, but the contrast of the font is so low, I didn't see them), a legend (in the chart, not below it), etc.

    Do you mean in the browser or in the generated image? In the browser contrast should be very high. Added a screenshot below just in case. The images aren't really looked after yet, they've a transparent background, I figured for now that's flexible. There's also a simple legend you can toggle, but not too fond of it.

    One thing I would find very valuable personally would be to edit some of the chart properties interactively. This is something we can't easily do with the Python scripts. For example, I often run a benchmark, store the results, but forget to set a nice label. Being able to adjust the command names would be really neat. And it would be really cool to change colors in the chart view, not before.

    That has now been added. And an option to save that test as a new item. So you can approach in two ways.

    Another thing that would be useful is support for parametrized benchmarks (see --parameter-scan and --parameter-list). These benchmarks often lend themselves well to interesting plotting opportunities.

    Great. I already had something for that so let's just say it's on the TODO list (that's why the strategy only has a "default" option, there'll be another option for this)

    try venz dev_chart_2

  4. sharkdp commented on Dec 27, 2024

    @sharkdp
    Owner

    Do you mean in the browser or in the generated image? In the browser contrast should be very high. Added a screenshot below just in case.

    I was not using dark mode. Anyway, contrast is much better now after the update. Thanks. There is a new problem where the y axis labels seem to have another label behind them in gray?

    image

    That has now been added. And an option to save that test as a new item. So you can approach in two ways.

    Very nice

    Great. I already had something for that so let's just say it's on the TODO list (that's why the strategy only has a "default" option, there'll be another option for this)

    👍

    One additional feedback point: the toggle buttons look very nice, but I find the UX not really great. I think I'd prefer something were I could immediately select the option I want. And immediately understand what I'm changing without having to interpret the icons.

  5. Repository owner locked and limited conversation to collaborators on Dec 28, 2024
  6. converted this issue into a discussion #786 on Dec 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions