-
Notifications
You must be signed in to change notification settings - Fork 8
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
Try merging Resolver and Typechecker into one pass #32
Comments
I'll take on this. |
OK, it would be good to know the performance tradeoff, since having the passes separate is preferred because it's more readable. The combined1000 benchmark is probably the most representative, but you can come up with some better one. You can use tango for A-B benchmarking via |
@InnocentZero See #38, we should probably fix our benchmarks first before optimizing. |
The benchmarks are fixed, and the new parser seems to be at least 10x faster in most benchmarks, which is good. But the combinedX.nu benchmarks scale less efficiently than the old parser. Every 10x increase in code size, the new parser scales about 20x, while the old one is closer to 10x. So it would still be interesting to see how the performance would be with the two passes merged. |
Let's analyze which parts don't scale well before rushing to make that single pass |
I guess we need finer benchmarking tests to see which parts don't scale well wrt code size. I can write a few tests if that's ok with all of you. |
Yeah, why not. We might also want to wait until the compiler is more complete, it's still missing several fundamental parts. |
Merging the resolving and typechecking passes into one might help performance. The resulting pass can be called “semantic analysis”, or “Sema”.
The text was updated successfully, but these errors were encountered: