-
Notifications
You must be signed in to change notification settings - Fork 482
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
[Builtins] Split 'KnownBuiltinTypeIn' out of 'DefaultKnownBuiltinTypeIn' #6327
[Builtins] Split 'KnownBuiltinTypeIn' out of 'DefaultKnownBuiltinTypeIn' #6327
Conversation
/benchmark validation |
/benchmark nofib |
/benchmark lists |
Click here to check the status of your benchmark. |
Comparing benchmark results of 'validation' on '3461df2cc' (base) and '77fa0548e' (PR) Results table
|
Click here to check the status of your benchmark. |
Comparing benchmark results of 'nofib' on '3461df2cc' (base) and '77fa0548e' (PR) Results table
|
Click here to check the status of your benchmark. |
/benchmark nofib |
/benchmark lists |
Comparing benchmark results of 'lists' on '3461df2cc' (base) and '77fa0548e' (PR) Results table
|
Click here to check the status of your benchmark. |
Comparing benchmark results of 'nofib' on '3461df2cc' (base) and '77fa0548e' (PR) Results table
|
Click here to check the status of your benchmark. |
Comparing benchmark results of 'lists' on '3461df2cc' (base) and '77fa0548e' (PR) Results table
|
/benchmark nofib |
/benchmark lists |
/benchmark validation |
Click here to check the status of your benchmark. |
Click here to check the status of your benchmark. |
Click here to check the status of your benchmark. |
…to effectfully/builtins/split-KnownBuiltinTypeIn-out-of-DefaultKnownBuiltinTypeIn
/benchmark nofib |
Click here to check the status of your benchmark. |
/benchmark lists |
/benchmark validation |
/benchmark nofib |
Comparing benchmark results of 'lists' on '613ab5f17' (base) and 'aa80c891c' (PR) Results table
|
Click here to check the status of your benchmark. |
Comparing benchmark results of 'validation' on '613ab5f17' (base) and 'aa80c891c' (PR) Results table
|
Click here to check the status of your benchmark. |
Comparing benchmark results of 'lists' on '613ab5f17' (base) and 'aa80c891c' (PR) Results table
|
Click here to check the status of your benchmark. |
Comparing benchmark results of 'validation' on '613ab5f17' (base) and 'aa80c891c' (PR) Results table
|
Click here to check the status of your benchmark. |
Comparing benchmark results of 'nofib' on '613ab5f17' (base) and 'aa80c891c' (PR) Results table
|
/benchmark marlowe |
A clear improvement and the Core looks perfect finally, but the improvement is only detectable in very specialized benchmarks and I'm not really sure if it's worth the additional boilerplate. We really should just split the universe into a type-level and a term-level and rip all these benefits and then quite some more, plus simplify the builtins machinery by a lot. I'll think about it a bit more, but most likely I'm going to close this PR in the end. |
Click here to check the status of your benchmark. |
Comparing benchmark results of 'marlowe' on '613ab5f17' (base) and 'aa80c891c' (PR) Results table
|
/benchmark lists |
2 similar comments
/benchmark lists |
/benchmark lists |
Click here to check the status of your benchmark. |
Comparing benchmark results of 'lists' on '613ab5f17' (base) and '5668ea0b0' (PR) Results table
|
Click here to check the status of your benchmark. |
Comparing benchmark results of 'lists' on '613ab5f17' (base) and '5668ea0b0' (PR) Results table
|
Click here to check the status of your benchmark. |
Comparing benchmark results of 'lists' on '613ab5f17' (base) and '5668ea0b0' (PR) Results table
|
OK, clearly not worth it. |
This renames
KnownBuiltinTypeIn
toDefaultKnownBuiltinTypeIn
(as it's only useful in the default methods ofMakeKnownIn
andReadKnownIn
) and defines a newKnownBuiltinTypeIn
that forces dispatching of the outermostHasTermLevel
instance, which ensures that GHC does not provide it as a dictionary to the builtins code, which would make it necessary to do the dispatching at runtime. I don't really know if it helps performance, but it's easy and I've definitely seen GHC not dispatching constraints when it can, thereby slowing things down.