2 ms·
> Optimizer can also specialize functions and programmers can do too Yes, but not if you pass in void *. For libraries this matters. If you're both writing the
by consteval 2y ago
> Optimizer can also specialize functions and programmers can do too
Yes, but not if you pass in void *. For libraries this matters. If you're both writing the producer and consumer then sure, you can do it manually.
> code bloat caused by monomorphization
This is true and a real problem, but I would argue in most scenarios extra codegen will be more performant than dynamic allocation + redirection. Because that's the alternative, like how swift or C# or Java do it.
- neonsunset 2y agoJava does not monomorphize, it has no true generics - it's objects all the way down. It does, however, perform guarded devirtualization since all methods are virtual by default, so performance lives and dies by OpenJDK hotspot emitting guarded for fast, often multiple, dispatch as well as optimizing "megamorphic" callsites with vtable-ish dispatch (which is about the default cost of interface dispatch in .NET, somewhat slower than virtual dispatch).
- consteval 2y agoVery interesting, thanks for sharing. Always neat to look into the inner workings of JVM implementations.
- uecker 2y agoOf course it also works with void*.