Побочный эффект много printf? - PullRequest
0 голосов
/ 24 февраля 2012

Приветствие !!!

У меня есть несколько приложений, работающих в CentOS Linux, скомпилированных в gcc версии 4.4.4, использующих putty.exe в ssh-соединении с сервером, THREADLIB = POSIX, потому что мой ap используетмного потоков, и мне нужно смотреть много информации, используя большое количество printf на экране для просмотра скорости и информации, хотя я не могу сосредоточиться на одном элементе, я использую клавиатуру «printScr» и вставляю ее в MS Paint, чтодовольно прост в использовании !!

Хотя я печатаю слишком много информации в цикле like for, я чувствую, что скорость моего AP с тех пор снижается, и он работает быстрее, если я уберу эти printf in for loop..

Мой вопрос: действительно ли «слишком много вывода на экран» действительно влияет на скорость ap?и если это правда, за исключением уменьшения printf, что еще я могу сделать, чтобы не слишком влиять на скорость?

Спасибо за любую информацию !!

Ответы [ 3 ]

1 голос
/ 24 февраля 2012

I / O медленный, и терминал имеет тенденцию быть исключительно медленным устройством ввода-вывода.Перенаправление вашего вывода в файл, вероятно, поможет существенно.Для иллюстрации рассмотрим следующие времена для миллиона итераций:

Нет printf: 0,008 с
В / dev / null: 0,182 с
В файл: 0,22 с
К терминалу: 2,513 с

0 голосов
/ 24 февраля 2012

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

0 голосов
/ 24 февраля 2012

Вход на экран приведет к снижению производительности. Попробуйте свести к минимуму количество вызовов printf и вместо этого записать вывод в файл. Это должно несколько ускорить вашу программу.

Ссылка

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