4 ms·
>Function calls are really slow Really? How can you design a new language with such a problem? It's not the 80ies anymore.
by nn3 11y ago
>Function calls are really slow
Really? How can you design a new language with such a problem? It's not the 80ies anymore.
- TillE 11y agoAren't non-inlined function calls in any language "slow"? I'm not seeing any details here, but as Swift is a compiled language with little support for runtime monkey-patching, I assume it's not doing anything especially ridiculous with normal function calls.
- jerf 11y agoYou'd have to define "slow" before you can answer that. I say this not because Go is the epitome of speed, but merely because I happen to have the number on hand from recent testing: Go can call an interface method with no arguments and no return value in a tight loop in about 5 nanoseconds. Is that fast? Is that slow? Depends on your definition. On the machine in question that's about 15 cycles. That strikes me as pretty good in the broad sense, but certainly 15 cycles slower than an inlined call. (I'd like to compare it to a static function call but I haven't yet worked out how to write a static function call in such a way that I can run it in the profiler correctly but it doesn't inline down to nothing.)
- asQuirreL 11y agoAFAICT Swift does the sensible thing to maintain backwards compatibility with ObjC: When Swift code calls Swift code, the dispatch is static (a jump, and some stack fiddling, when you're counting the change). But if it's interfacing with ObjC then it must necessarily resort to the ObjC runtime's message based dispatch, which is a bit slower.
- ChristianGeek 11y ago"It's not the 80ies anymore." It never was the eightyies.
- M8 11y agoApple is not a software company, they should focus on hardware.
- SiVal 11y agoThey do, usually edge on. Every year they get more focused on what their hardware looks like from the side and seem less concerned with how their software works when you're facing the screen.
- demallien 11y agoI was just going to down vote you, that's all trolling deserves on HN, but on the off chance that you're just ignorant, and not actually trolling: 1) there are 5 OSes with more than 100million users. Apple makes two of them 2) there are 4 major web browsers out there, apple makes one of them 3) there are 3 major office suites out there, Apple makes one of them Apple is one of the biggest software companies in the world. I suspect they are second only to Microsoft in that regard, and yes, I do include Google in that assessment.
- rimantas 11y ago"If you are serious about software you should make your own hardware." So Apple not only is software company, they are serious about it.
- josephlord 11y agoIf you put a dynamically dispatched function call in the middle of a tight loop you will slow it down significantly. As I say in the talk in most code it just doesn't matter. It is all relative. A function call is fast relative to a context switch or and I/O operation. If you think what is required to call an instance method on the class it is significant. Roughly, read the address of the object, read the pointer to the class, read the vtable of the class for the function pointer then set registers and stack values and make the function call. In ObjC method calls are actually via objcmsg_send calls to do the dynamic dispatch. Computers are fast and they do these things quickly but not having to do them is much faster.