将类型作为参数传递给方法时的内存开销有多大?

时间:2009-08-26 23:41:39

标签: iphone cocoa-touch uikit

例如,我尝试做这样的事情:

- (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 个答案:

答案 0 :(得分:2)

你将复制你的NSDecimal,但它们只有36字节(如果我的数学是正确的)结构,所以它可能不是一个重要的开销。

但这真的是一个问题吗?例如,您是否每秒多次调用此方法?在尝试优化这样的事情之前,首先对代码进行示例以查看瓶颈所在。正如Knuth所说,“过早优化是所有邪恶的根源”。