Вопрос по заявлениям If-Else на XCode - PullRequest
0 голосов
/ 25 апреля 2011

Использует этот код:


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?

Я знаю, что коды отрывочны.Сожалею.Спасибо за подсказку по редактированию, мистер Дейв.

Ответы [ 3 ]

2 голосов
/ 25 апреля 2011

Не повторяйся . Да, вы можете избежать крошечных накладных расходов при вызове функции, удалив функцию и копируя ее содержимое везде, где вы ее используете, но это не хороший способ ускорить вашу программу. Разница в скорости будет настолько мала, что вы, вероятно, не сможете обнаружить ее даже после многих, многих итераций. И вы просто просите ошибок, когда вы меняете одно место, а другое - нет.

1 голос
/ 25 апреля 2011

То, что вы описали, известно как встраивание .Встраивание, как правило, делает код быстрее, но в некоторых случаях он может замедлить работу кода.В любом случае, если остальная часть кода уже не оптимизирована и не находится в очень узком цикле, вы не заметите никакой разницы в скорости.

1 голос
/ 25 апреля 2011

Предполагая, что основное различие, о котором вы спрашиваете, заключается в использовании внешнего метода вне вашего условного выражения ...

Нет, не то, чтобы я мог придумать.Однако на любом языке обычно хорошей идеей является объединение общей функциональности в одном методе, где это возможно, чтобы все было упорядочено и легко читалось.Другими словами, я бы выбрал ваш первый вариант.=)

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