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
Improve structure of join benchmarks #2707
Improve structure of join benchmarks #2707
Conversation
Thank you for looking into this! If I understand the key part of your proposal correctly is that you want to run these tests in one Julia process. Is this correct? This was unfortunately problematic when I developed the tests. I had to run each test in a fresh Julia session, as otherwise GC time influences the benchmarks too much. In particular later questions get skewed timing because GC starts to slow down because it has to sweep though millions of very small objects. I initially had roughly what you propose but had to change it because it was too unstable. But I used my approach for development (when there were many moving parts), and maybe now it would be OK to switch to what you propose. Does your code produce comparable timings as my code on the same machine for all tests? (and what machine are you using to run the comparisons - here the amount of RAM might affect the design and results). |
Hi @bkamins, I ran both the original and the new benchmark suite and indeed the new suite is faster than the old, but not by much as much as I would expect (2h9m vs. 2h41m). Nevertheless the structure allow me to more easily benchmark from REPL using Profile and Revise for quick interaction, and that's a win in my workfow :) The test timings were roughly the same (as expected); but I indeed run them on a pretty beefy machine (128GB RAM) I have access to at work. GC being an issue even after the multiple |
This can be unstable especially if one works with
If you do not have enough RAM (I tested on smaller machines) then GC may get triggered within the Let me propose the following:
|
The point of the current design is to avoid GC at all as much as possible when timing the |
Makes sense. I'll keep the old behavior as default, and add "--single-process" to |
Whatever is easiest for you, but please keep |
Done! |
Thank you! |
Simple patch to improve the way join benchmarks are structured.
They should run faster and make it easier to run in the REPL for profiling/improvement