-
Notifications
You must be signed in to change notification settings - Fork 32
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
macro expander stresses symbol table #810
Comments
gctwa's filtering looks like it's quadratic in the length of the oblist :( |
Changeset 1a06296 makes |
Changeset 3bef27e makes Using a hash table also appears to be slightly faster, but that's much less important. Improving the performance of |
After figuring out why the sample implementation of SRFI 148 doesn't work in Larceny (it assumes a lack of hygiene when distinguishing between pattern variables and literals), I looked into why it and other macro-intensive SRFIs take so long to compile. It turns out that compilation, mostly macro expansion, creates about 800000 symbols, of which only 5000 or so need to be retained following compilation.
Reclaiming those symbols via
gctwa
takes about ten minutes on our main Linux machine, which is about six times as long as the compilation itself. Callinggctwa
a second time takes only 75 ms.The colors generated during macro expansion don't have to be symbols, but using symbols to represent colors appears to increase the number of generated symbols by only 10% or so.
The text was updated successfully, but these errors were encountered: