-
Notifications
You must be signed in to change notification settings - Fork 501
Kwxm/nofib size info (SCP-3428) #4376
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
Conversation
|
So I was thinking "why do we need two scripts for this, can't we get better output?" and it turns out that criterion can export results as CSV if you use the |
michaelpj
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fine, except I do think it might be nice to start the glorious future of outputting CSV today. We depend on casssava elsewhere, it's pretty easy to use.
| ++ "You'll probably want to redirect the output to a file.") | ||
|
|
||
|
|
||
| -- Copied pretty much directly from plutus-tx/testlib/PlutusTx/Test.hs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
argh, need to centralize these :(
| printSizesAndBudgets :: IO () | ||
| printSizesAndBudgets = do | ||
| -- The applied programs to measure, which are the same as the ones in the benchmarks. | ||
| -- We can't put all of these in one list because the 'a's in 'CompiledCode a' are different |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You could do it with an existential, but maybe not worth it.
This script and the benchmarking one do different things though. In the benchmarking script you've only got one item of data per benchmark (the time) but here we've got three. I did consider producing three different table (size, cpu budget, memory budget) and then comparing them one by one, but that'd make it hard to see all the information about a single benchmark. The CSV output from Criterion has lots if irrelevant stuff in it too. Here's an excerpt from the benchmark results for the builtins: I'm not convinced that we can process that uniformly with the output from this PR. Also, maybe we want to process time figures from execution benchmarks differently to make them human-readable. The |
|
Okay, I guess I won't be fussy about it. I just don't like proliferating these scripts too much and I wish we could simplify things somehow... |
|
Seems to be stuck in CI. |
|
CI seems stuck. |
|
I think this is safe, though. |
* Add command to nofib-exe to print size and budget info for each benchmark * Update script * Realign header * Update comment * Update comment * Remove accidental imports * updateMaterialized * Some awk reformatting
This adds a
sizes-and-budgetsoption to thenofib-execommand which will print out the sizes and budget requirements of the standard nofib benchmarks. This might be useful for evaluating the end-to-end performance of the Plutus compiler, although we should really do SCP-2275. It take about 10-15 seconds to run on my laptop. The output looks like this:There's also a script called
nofib-compareinplutus-benchmarkwhich will compare the outputs of two runs. Here's a comparison of the results for this branch against the results for the UPLC simplifier branch:It just shows you the changes because including the data from the input files makes the table extremely wide. I haven't made any attempt to automate this, but presumably we could do so if it's useful.
Pre-submit checklist: