关于XCode的If-Else语句的问题

时间:2011-04-25 04:40:09

标签: objective-c xcode ios xcode4

正在使用此代码:


if (foobar == 1)    
{  
 method(a)  
}   
else if (foobar == 2)      
{   
 method(b)   
}

void method (foo)   
{   
//method 1foo   
//method 2foo   
//method 3foo   
}

比这段代码更快,或编译成更小的可执行文件:


if (foobar == 1)    
{   
//method 1a   
//method 2a   
//method 3a   
}   
else if (foobar == 2)   
{   
//method 1b   
//method 2b   
//method 3b   
}   

在Xcode上编译时是否有任何影响?

我知道代码是粗略的。抱歉。 感谢编辑提示,Dave先生。

3 个答案:

答案 0 :(得分:2)

Don't Repeat Yourself。是的,您可以通过消除函数并在使用它的任何地方复制其内容来避免函数调用的微小开销,但这不是加速程序的好方法。速度的差异将非常小,即使经过多次迭代,您也可能无法检测到它。而你只是在乞求改变一个地方而不改变其他地方的错误。

答案 1 :(得分:1)

假设您要问的主要区别在于使用条件语句之外的外部方法......

不,不是我能想到的。但是,在任何语言中,尽可能将通用功能封装在单个方法中通常是个好主意,以保持组织和易于阅读。换句话说,我会选择你的第一个选择。 =)

答案 2 :(得分:1)

您所描述的内容称为inlining。内联通常使代码更快,但在某些情况下它可以使代码更慢。在任何情况下,除非代码的其余部分已经高度优化并且它处于非常紧凑的循环中,否则您将不会注意到任何速度差异。