Custo do envio da mensagem no Objective-C
Estou curioso para saber sobre o custo do envio de mensagens no Objective-C em várias situações. Particularmente, quero orientar minha escolha de design de programa, para não me sentir tentado a otimizar prematuramente, evitando o envio de mensagens quando elas resultariam em um design melho
Um caso no meu projeto atual é que eu tenho uma classe com variáveis de instância: offsetX e offsetY. Muitas vezes, quero o deslocamento absoluto e, no momento, tenho essa linha de código em todo o lugar: -
int absOffset = ((offsetX < 0.0) ? -offsetX : offsetX) +
((offsetY < 0.0) ? -offsetY : offsetY);
Agora, se fosse C ++, eu criaria uma função embutida que retornaria o valor para absOffset. Mesmo em Java / C #, eu poderia definir uma função como final / selada e ter certeza de que seria incorporad
O objetivo-C seria: -
-(int)absOffset {
return ((offsetX < 0.0) ? -offsetX : offsetX) +
((offsetY < 0.0) ? -offsetY : offsetY);
}
e eu chamaria assim: -
int ao = [self absOffset];
Agora, o compilador é capaz de incorporar isso? Suponho que seja capaz de, pelo menos, corrigi-lo em uma chamada de função direta e evitar o envio dinâmico de mensagens que (presumo) o objetivo-c deve usar por causa de seu tipo de sistem
Além disso, em geral, quanto custa o envio de mensagens no objetivo-C? Difere ao chamar um 'id' versus um ponteiro para uma classe concreta?