2009-08-26 4 views
0

Par exemple, j'essaie de faire quelque chose comme ceci:Quelle est la taille du coût de la mémoire lors du passage d'un type en tant que paramètre à une méthode?

- (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 les paramètres par référence (est-ce le mot?). Mais ma méthode ne fonctionne pas. Je trouve ce truc par référence difficile à utiliser. Est-ce que ma méthode crée des copies de ces valeurs? Est-ce un gaspillage de mémoire?

Répondre

2

Vous allez faire des copies de vos NSDecimal s, mais ils ne sont que de 36 octets (si mes maths sont corrects), donc ce ne sera peut-être pas un surcoût significatif.

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

+1

Qui lit Knuth ces jours-ci? Je ne sais pas combien de fois les programmeurs ont cité des processeurs plus rapides/gros disques/RAM pas cher comme Knuth est inutile. Ensuite, une plate-forme comme l'iPhone arrive et StackOverflow devient l'alternative à la lecture de Knuth - et même K & R. – mahboudz

+0

WTH est Knuth? S'il vous plaît expliquer ... –

+0

Donald Knuth, http://en.wikipedia.org/wiki/Donald_Knuth –

Questions connexes