Насколько велика стоимость памяти при передаче типа в качестве параметра методу? - PullRequest
0 голосов
/ 27 августа 2009

Например, я пытаюсь сделать что-то вроде этого:

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

Но мне интересно, насколько велика стоимость памяти при использовании этой обертки. Функция NSDecimalCompare принимает параметры по ссылке (это слово?). Но мой метод не делает. Я нахожу этот материал по ссылке трудным для использования. Мой метод создает копии этих значений? Это пустая трата памяти?

1 Ответ

2 голосов
/ 27 августа 2009

Вы будете делать копии своих NSDecimal s, но они будут иметь только 36-байтовые (если моя математика верна) структуры, поэтому это может не быть значительным объемом служебных данных.

Но действительно ли это проблема? Например, вы вызываете этот метод много раз в секунду? Попробуйте сначала свой код, чтобы увидеть узкие места, прежде чем пытаться оптимизировать подобные вещи. Как говорит Кнут, «преждевременная оптимизация - корень всего зла».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...