Quão grande é o custo de memória quando passar um tipo como parâmetro para um método?

votos
0

Por exemplo, eu tento fazer algo como isto:

- (BOOL)compare:(NSDecimal)leftOperand greaterThan:(NSDecimal)rightOperand {
    BOOL returnValue = NO;
    NSComparisonResult result = NSDecimalCompare(&leftOperand, &rightOperand);
    if (result == NSOrderedDescending) { // if the left operand is greater than the right operand
        returnValue = YES;
    }
    return returnValue;
}

Mas eu me pergunto o quão grande é o custo para a memória quando se usa este wrapper. A função NSDecimalCompare leva parâmetros por referência (que é a palavra?). Mas o meu método não faz. Acho que coisas por referência difícil de usar. O meu método de criar cópias desses valores? É um desperdício de memória?

Publicado 27/08/2009 em 00:41
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

Você estará fazendo cópias de seu NSDecimals, mas eles são apenas 36 bytes (se a minha matemática está correta) estruturas, por isso não pode ser uma sobrecarga significativa.

Mas este é realmente um problema? Por exemplo, se você chamar esse método muitas vezes por segundo? Provar o seu código primeiro para ver quais são os gargalos antes de tentar otimizar coisas como esta. Como diz Knuth, "otimização prematura é a raiz de todo mal".

Respondeu 27/08/2009 em 00:53
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more