> Am 29.06.2016 um 00:32 schrieb John McCall <rjmcc...@apple.com>:
> 
> The decision to make class methods polymorphic by default was always premised 
> on being able to undo that in obvious cases where methods are never 
> overridden.  Making a class public so that clients can use it shouldn't cause 
> significant performance degradations just because you forgot to also write 
> "final".
> 
> John.

I do care about performance. For this reason I don't want a fully dynamic 
language. I disagree about the "significant performance degradations just 
because you forgot to also write `final`". I mentioned "performance" in my 
original post only because it would be the only convincing argument - if there 
were indeed superior performance when using `final`.

Of course, dynamic dispatch is much slower than static dispatch. But optimized 
code does not spend much time dispatching. If a method takes 3 seconds to 
complete, and from that 2 seconds are used for dynamically dispatching method 
calls, then I would say that it has not been optimized for performance yet. How 
would such a function look like? The function being dynamically dispatched 
should probably not be statically dispatched but inlined completely. And for 
the rare case that the dispatch type really makes all the difference, it's 
always possible to `final`ize (or `private`ize) some of the used methods.

-Michael

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to