Quelle est le coût de la mémoire lors du passage d'un type comme paramètre à une méthode?

voix
0

Par exemple, j'essaie de faire quelque chose comme ceci:

- (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;
}

Mais je me demande quelle est le coût de la mémoire lors de l'utilisation de cette enveloppe. La fonction NSDecimalCompare prend des paramètres par référence (est-ce le mot?). Mais ma méthode ne fonctionne pas. Je trouve ce genre de choses par référence difficile à utiliser. Est-ce que ma méthode crée des copies de ces valeurs? Est-ce une perte de mémoire?

Créé 27/08/2009 à 00:41
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
2

Vous allez faire des copies de votre NSDecimals, mais ils sont seulement 36 octets (si mes calculs sont exacts) struct, de sorte qu'il pourrait ne pas être une surcharge importante.

Mais est-ce vraiment un problème? Par exemple, vous appelez cette méthode plusieurs fois par seconde? Exemple votre code d'abord pour voir où les goulots d'étranglement sont avant d'essayer d'optimiser les choses comme ça. Comme le dit Knuth, « l'optimisation prématurée est la racine de tous les maux ».

Créé 27/08/2009 à 00:53
source utilisateur

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