Costo del envío de mensajes en Objective-C

Tengo curiosidad por saber sobre el costo del envío de mensajes en Objective-C en diversas situaciones. Particularmente, quiero guiar mi elección del diseño del programa, por lo que no estoy tentado a optimizar prematuramente evitando el envío de mensajes cuando harían un mejor diseño.

Un caso en mi proyecto actual es que tengo una clase con variables de instancia: offsetX y offsetY. A menudo quiero el desplazamiento absoluto y en este momento tengo esta línea de código por todas partes: -

int absOffset = ((offsetX < 0.0) ? -offsetX : offsetX) + 
                 ((offsetY < 0.0) ? -offsetY : offsetY);

Ahora si esto fuera C ++, crearía una función en línea que devolviera el valor de absOffset. Incluso en Java / C #, podría definir una función como final / sellada y estar bastante seguro de que estaría en línea.

El objetivo-C sería: -

-(int)absOffset {
    return ((offsetX < 0.0) ? -offsetX : offsetX) + 
            ((offsetY < 0.0) ? -offsetY : offsetY);
}

y lo llamaría así: -

int ao = [self absOffset];

Ahora, ¿puede el compilador incorporar eso? Supongo que al menos puede arreglarlo a una llamada de función directa y evitar el envío dinámico de mensajes que (supongo) debe usar el objetivo-c debido a su sistema de tipos.

También, en general, ¿cuánto cuesta el envío de mensajes en el objetivo-C? ¿Difiere cuando se llama a través de un 'id' frente a un puntero a una clase concreta?

Respuestas a la pregunta(4)

Su respuesta a la pregunta