-
Notifications
You must be signed in to change notification settings - Fork 12
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
Restore form performance #89
Restore form performance #89
Conversation
For unadorned identifiers to be treated as function identifiers, ensure that qi functions take precedence over racket functions. This allows us to define functions that may be treated as part of the language (and not be shadowed by calling-scope identifiers) without actually being syntactically part of the language as core forms or macros.
Notes from today's meeting: A Loophole in Qi Space. Esp @benknoble you may be interested in this "loophole" that Michael came up with as an alternative to some of the options we've talked about before ("restorative/peephole optimizations" vs inflating the core language). |
I attempted to do some benchmarking of I tried with different distributions of the value The bars show the average of 5 runs, with error bars the size of the standard deviation. Note that the y-axis is on a logarithmic (base-10) transform; otherwise, you wouldn't be able to see all sizes on the same graph. |
👁️ 🍭 That's great data! We can aim to discuss it at this week's Qi meetup (happening on Thursday just FYI). Those charts seriously look amazing, I'm curious how you generated those. It could be useful to add the recipe to the Developer's Guide. |
Hand-typed from the original; forgive typos 😅
|
@benknoble We reviewed the data and after playing around with the expansions of the two alternatives we seemed to conclude that they should perform almost identically in practice since they both short-circuit and have very similar expansions. Lmk if you think we've misunderstood though! Also the code works perfectly and took almost ten minutes to run on my laptop. I'll add it to the wiki soon 👍 |
No, I think that's right. Thanks for the link. I think for
Great! Yeah, it isn't fast: it would be better to generate the data once, save it, and then chart whatever you want from there. I think it was roughly similar on my machine (I recall using 2 frequencies being 2–3 minutes). |
Great idea! We can try it in the first optimizations PR. |
This PR is ready -- any input welcome! As it will be reviewed at the end anyway as part of merging the integration branch into main, there's no pressing need for review at this stage and we can just merge it in a few days in any case. |
Benchmarking recipe added to the wiki 🙂 |
Summary of Changes
Restore performance of Qi forms to pre-stratification levels.
qi-sdk/profile/report.rkt
instead of having it be a separate scriptSee Return to baseline performance for more information.
Public Domain Dedication
(Why: The freely released, copyright-free work in this repository represents an investment in a better way of doing things called attribution-based economics. Attribution-based economics is based on the simple idea that we gain more by giving more, not by holding on to things that, truly, we could only create because we, in our turn, received from others. As it turns out, an economic system based on attribution -- where those who give more are more empowered -- is significantly more efficient than capitalism while also being stable and fair (unlike capitalism, on both counts), giving it transformative power to elevate the human condition and address the problems that face us today along with a host of others that have been intractable since the beginning. You can help make this a reality by releasing your work in the same way -- freely into the public domain in the simple hope of providing value. Learn more about attribution-based economics at drym.org, tell your friends, do your part.)