Я строю систему, где мне придется звонить несколько раз некоторые команды в зависимости от пользовательского ввода, напримерЧто происходит быстрее: проверка нулевого указателя или вызов пустой функции?
void handle(int MouseInput)
{
switch(MouseInput)
{
case Move:
ActionMove->execute();
// ...
case BtnUp:
ActionBtnUp->execute();
// ...
}
}
Но поскольку система параметризуемым, не всегда у меня есть, например, объект actionMove
команды (иногда я ничего не делаю в Move).
Что быстрее:
Реализация нулевой шаблон объекта, т.е. имеющие объект с
execute
функции, как такexecute() {}
Или проверки нулевых указателей каждый раз:
if (ActionBtnUp) ActionBtnUp->execute();
То, что я спрашиваю, - это то, что из-за больших накладных расходов, стоит перейти к функции, которая ничего не делает (может быть, компилятор легко оптимизировать это) или каждый раз проверять нулевой указатель?
Примечание. На данный момент я могу проверить только мелкий масштаб и не вижу различий. Если это так, я хотел бы знать.
[Который быстрее?] (Http://ericlippert.com/2012/12/17/performance-rant/) – CoryKramer
Звучит как преждевременная оптимизация для меня. Пойдите с тем, что сделает ваш код более четким и чистым, и оптимизируйте, если вы найдете здесь проблему производительности. – Luke
Как насчет того, чтобы вы инкапсулировали логику, идите с более простой на данный момент, строите до тех пор, пока у вас не будет большего масштаба, а затем профилируйте оба решения? – KABoissonneault