Поставив инструкцию печати внутри цикла for, вы жертвуете некоторой производительностью.
Поскольку программа должна выполнять системный вызов для записи вывода на экран каждый раз, когда сообщение печатается, это занимает процессорное время от самой программы.
Вы можете увидеть разницу в производительности между этими двумя петлями:
int i;
printf("Start Loop A\n");
for(i = 0; i < 100000; i++) {
printf("%d ", i);
}
printf("Done with Loop A\n");
printf("Start Loop B\n");
for(i = 0; i < 100000; i++) {
// Do Nothing
}
printf("Done with Loop B\n");
Я бы включать в себя код синхронизации, но я нахожусь в середине работы и может обновить его позже за обедом.
Если разница не заметна, вы можете увеличить 100000 на большее число (хотя слишком большое число приведет к тому, что первый цикл займет слишком много времени для выполнения ПУТЕЙ).
Ой, забыл закончить свой ответ.
Чтобы сократить количество системных вызовов, которые должна выполнить ваша программа, вы можете сначала проверить состояние и только распечатать, если это условие истинно.
Например, если вы подсчитывая, как в моем примере кода, вы могли бы напечатать только каждый 100-ый номер с помощью %
:
int i;
for(i = 0; i < 100000; i++) {
if(i%100 == 0)
printf("%d", i);
}
Это позволит сократить количество системных вызовов от ~ 100000 до ~ 1000 , что, в свою очередь, увеличило бы производительность цикла.
в любом случае в конце вы его не снимаете? – Alexis
Почему вы делаете '/ 1000'? Я бы сказал, что для этого достаточно 'i% large_n'. –
Почему вы заботитесь о производительности для чего-то, что вы используете только в сборках отладки и разработки? –