-
Notifications
You must be signed in to change notification settings - Fork 105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add benchmarks #72
Comments
Sounds cool! Regarding storing things, maybe we can store them on a separate repo, run a chron GHA and commit the result. I'll admit I have no experience with any of those tools, but happy to take a look! |
We did something like that for deno although I don't remember the exact details. @littledivy if I can impose on your time, do you know offhand how that is (or was) set up? The denobot still commits to denoland/benchmark_data, it looks like. |
The old github actions setup in Deno is still working but yeah, GHA is quite noisy. We switched to benchmarking on bare metal https://deploy.equinix.com/developers/docs/metal/deploy/spot-market/. Costs almost nothing. We run it after every release (4-ish in a month) and runs for 3-4hr per run. Basically, allocates a machine via GHA cron -> runs the bench on the machine -> machine commits to a benchmark_data-like repo connected to GH pages UI. |
Thanks! GHA noisiness is probably less of an issue for us because we're not doing I/O, only CPU/memory-bound tasks. Okay, so I think the actions that need to be taken are:
I'd simply clone quickjs-ng/quickjs at the start of the benchmark job. Simple, and then the bot doesn't need write access to this repo, only the benchmark repo. Volunteers? |
I think we don't even need a new user, a PAT should provide enough access control I think. |
I can see I'm out of my depth here. :-) (If you're wondering if I'm surreptitiously trying to get you to step forward - I do believe I am.) |
I'll get the ball rolling! ✋ |
Added octane, kraken and sunspider runners to https://github.com/littledivy/quickjs_ng_benchmarks (probably needs JSON export) WDYT? Happy to transfer repo ownership |
Nice! I'll take a look shortly! |
@littledivy how about I create a |
How about |
Sounds good |
I have web-tooling-benchmark more or less set up (thanks @bmeurer, it's awesome.) The results are neither pretty nor unexpected but it's already providing valuable insights. I wouldn't have guessed we'd be spending so much time in lre_exec_backtrack() or push_state(). Lots of room for improvement there. The benchmarks themselves are rolled up into a single 32 MB file. Anyone object to me checking that in? edit: https://github.com/quickjs-ng/web-tooling-benchmark - checked in build artifacts, reduced sample size from 20 to 1, and disabled the coffeescript benchmark
|
Great stuff! |
@bnoordhuis Can you create a default branch in https://github.com/quickjs-ng/benchmarks? Need a base branch to send a PR. |
Done! |
Right now I'm ad hoc benchmarking, mostly tests/microbench.js and sunspider, but a) I'm not being very scientific about it, and b) they're micro-benchmarks.
I'd like to keep track of performance on a commit-by-commit basis. My thinking is that we run benchmarks on every commit to master and store/plot the results somewhere. Suggestions how/where very welcome.
In no particular order:
set up sunspider, kraken and octane; maybe
stealvendor V8's csuite tool: https://v8.dev/docs/benchmarksintegrate the web tooling benchmark; it's a collection of proper macro benchmarks
decide on metrics to track. Off the cuff: CPU time, memory, opcodes executed? GHA is probably too volatile to track wall clock time
The text was updated successfully, but these errors were encountered: