[swift-evolution] Pitch: (Almost) std libs

Jordan Rose jordan_rose at apple.com
Tue Jan 26 21:46:43 CST 2016


> On Jan 26, 2016, at 19:45 , Jordan Rose <jordan_rose at apple.com> wrote:
> 
> 
>> On Jan 26, 2016, at 18:49 , David Turnbull via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> 
>> Functions in a module go through dynamic dispatch. Operators are functions. So multiplying two complex numbers won't get inlined. The stdlib uses internal tricks so what appears as a module you import is available to be specialized and inlined.
>> 
>> To see this in action, try the CubeWorld demo from here: https://github.com/AE9RB/SwiftGL <https://github.com/AE9RB/SwiftGL>
>> Then change it so the math libraries aren't modules (move the files, delete the import statements). On my system, CPU drops from 60% to 6%. It's also the difference between 150 cubes and 1200 cubes at 60 fps. Make sure you turn on WMO.
>> 
>> I'm told it won't always be this way. But it is today.
> 
> Yep. We're planning to improve this but right now it's true: inlining and generic specialization does not happen across framework boundaries.

Only the generics are really "dynamic dispatch", though. Non-generic code is just "function calls that aren't inlined".

Jordan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160126/301a930a/attachment.html>


More information about the swift-evolution mailing list