3 ms·
Can someone please ELI5 this for me? What is the significance of speeding up objc_msgSend for Objective C?
by Dutchie2020 5y ago
Can someone please ELI5 this for me? What is the significance of speeding up objc_msgSend for Objective C?
- diebeforei485 5y agoIt is a codepath that is used a lot, in system frameworks that many apps use. So, speeding it up can yield a systemwide performance improvement for all sorts of apps.
- mucholove 5y agoPretty much every method call, unless it is optimized—will go through `objc_msgSend`. The runtime looks up the code for a particular object using `objc_msgSend.` The function signature varies depending on how many parameters the method has but it always has at least 2 arguments—the instantiated object and the method name. Objc calls this the selector. :)
- NobodyNada 5y ago> Pretty much every method call, unless it is optimized Do those get optimized now? As far as I know, objc_msgSend was never optimized out (as of a few years ago when I was doing iOS dev) because any method can be swizzled and replaced at runtime.
- mucholove 5y agoThere is some sort of devirtualization that might bypass it. When they announced, Twitter was going crazy about how it might kill ObjC dynamism. However, what I was to was that you can store the method in a variable, and call it directly, thus bypassing objcMsgSend. :)
- tinus_hn 5y agoIf you write a message send in Objective-C, like [object doSomething], behind the scenes the compiler translates this to a call to the objc_msgSend function in the Objective-C runtime library. This function looks up what code needs to run, taking into account inheritance and all the other dynamic features and runs it. So this function runs really often and is an important target for optimization.