AFAIK, Swift applies the same optimisations as for final classes if it can guarantee that the class will not be subclassed. That is, if the class is either private or internal and you have whole module optimisation enabled. If your class, however, is public and not final, there is no way the compiler can assure that it will not be subclassed in a different module and thus cannot perform optimisations like inlining method implementations.
– Alex > On 23 Jun 2016, at 09:16, Fabian Ehrentraud via swift-evolution > <[email protected]> wrote: > > Somewhere I read that we should always write "final class" where possible, as > it is more performant. Is this really the case, especially for non-library > modules? Can't the compiler infer whether a class has no subclasses when > compiling? Writing "final" just for performance reasons feels wrong. > > -- Fabian > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
