2016-06-09 2 views
0

Я использую C++ с QT 5.6. У меня есть простое консольное приложение в 2-х стилей следующим образом:Переменные влияют на производительность?

//First style 

qstring x = “Hi!”; 

void func() 
{ 
     QTextStream(stdout) << x; 
} 

int main() 
{ 
     while (true) 
     { 
       func_one(); 
     } 
} 

//Second style 

void func() 
{ 
     QTextStream(stdout) << “Hi!”; 
} 

int main() 
{ 
     while (true) 
     { 
       func(); 
     } 
} 

Что подчеркнет из процессора больше и, следовательно, имеют меньшую производительность не может быть большая разница, но когда мы применим это к большим масштабам, таких как сервер, на котором каждые 2 секунды происходит соединение, которое создает ситуацию, аналогичную описанной выше, и с несколькими переменными (но не с той же переменной и данными), что немного меньше использования ресурсов может привести к большим улучшениям производительности при меньшем использовании ресурсов. Таким образом, использование переменных дает любые улучшения производительности, но я буду использовать переменную только один раз в своей функции, хотя функция будет называться повторно или будет использовать переменные, замедляет работу программы, поскольку она должна периодически проверять ram, где находится значение «x "Сохраняются и затем извлекаются данные?

Edit 1:

Я не буду использовать переменную снова в моем коде, и мы можем считать, что нет компилятора оптимизаций. @DrDonut ответ в ссылке, которую вы дали, также не отвечает $array === (array) $array быстрее, чем is_array($array) i.e это микро-оптимизация, и я также спрашиваю, является ли второй стиль микро-оптимизацией или это вредит производительности.

+3

1) Составители умнее, чем вы могли бы подумать - в случае, описанном выше, особенно если вы используете 'QString константный x', идентичный код может очень хорошо быть произведено. 2) Не беспокойтесь о производительности сейчас. 3) Если необходимо, измерьте производительность, прежде чем пытаться угадать, что будет лучше. –

+0

Это не имеет значения. –

+0

В реальной жизни у вас нет роскоши жесткого кодирования строки, вам всегда нужно использовать переменную для изменения данных. Однако вы можете создать переменную для 'QTextStream (stdout)', чтобы сохранить ее от создания каждый раз. –

ответ

5

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

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

После того, как программа работает, если вы обнаружите, что ее производительность плохая, вам следует искать узкие места - места, где программа тратит много времени. Их можно найти с помощью профилировщиков или отладчика, а не путем угадывания.

Когда вы их нашли, вам необходимо оптимизировать эти критические места.

Читайте о premature optimization

Смежные вопросы