![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
Есть программа на консоли, которая рассчитывает очень долго некоторые вычисления. Не будет ли затратно выводить на консоль процесс? Сколько вообще он занимает процессора вывод через printf()?
|
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
for(int k = 0; k < 1000; k++) { if(k%10==0) printf("progress"); } -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
hawk3500 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Если есть возможность на мой взгляд надо сделать так:
1.создать глобальную переменную которая будет отображать процент выполнения.-progres; 2.создать вторую глобальную переменную которая служит флагом.Допустим bool StartProgressBarr;И если идёт обработка то значение переменной TRUE если нет обработки и прогресс бар не нужен то FALSE; 3.Создать поток который и будет выводить прогресс: DWORD WINAPI RThreadProc( LPVOID lpParam ) { while(TRUE) { while(StartProgressBarr==FALSE)Sleep(20); printf("%d",progres); if(progres==100)StartProgressBarr=FALSE;//100% Sleep(20); } return 1; } 4.Создать этот поток. Таким образом и процессор на это тратиться сильно не будет, и конфликта с другими процессами в разделении процессорного времени не будет благодоря Sleep();Значение Sleep уменьшать не стоит, если хотите то увеличте, менее 20 милисекунд система отрабатывает с большой погрешностью.Т.е. Sleep(10) в реальности "усыпит поток" на 10-30 мс. --------------------
воин dzen'a |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
hawk3500, а зафига так сложно? просто надо сделать какой-нибудь void AddProvress(), где и выводить символ "#" например. Саму функцию вызывать в нужном месте, как указал Artemon
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
http://www.boost.org/doc/libs/1_45_0/libs/...timer.htm#Class progress_display
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |