-
Notifications
You must be signed in to change notification settings - Fork 212
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
Use vector-of-structs of preds/semi for Lengauer-Tarjan #408
base: develop
Are you sure you want to change the base?
Use vector-of-structs of preds/semi for Lengauer-Tarjan #408
Conversation
I use the following benchmark: dominator_tree_benchmark.cpp On my machine (32 X 1792.7 MHz CPU s with hyper-threading and almost zero Load Average, Ubuntu 20.4) the report is the following (we may use the state after merging #407 as a base-line:
After implementing a "vector-of-structs" solution, the numbers are the following:
Here we can see about 1% speedup for the "large" cases (for CFGs with 186 basic blocks) and about 10% for small ones (Muchnick. fig. 8.18, 8 vertices). I'm thinking what to deal with the |
Maybe a check on a larger graph (up to 1000 or 2000-3000) nodes is needed to ensure there is no regression for large inputs. |
Thanks for trying this change, pity it didn't yield anything significant. I still think it's a better logical design, so I'm happy to proceed with it, although I'd like to make a few style changes. |
@jeremy-murphy Thank you for the suggestion, I've replaced every Also, I added a benchmark for a huge (3000+ nodes) graph, on such graph I see the following situation. The baseline (code from the
With the "cache-friendly" solution:
So, we can see even some performance degradation, up to 3-6%. |
Closes #383