Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2011, 02:20   #11
YourLastSong
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 75
По умолчанию

Спасибо.

Вообще у меня с измерением всё равно проблема, не знаю, как лучше сделать.
YourLastSong вне форума Ответить с цитированием
Старый 17.07.2011, 02:21   #12
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
Сообщение от YourLastSong
чем лучше измерить время в данном случае, кроме GetTickCount?
Я пишу в среде Code::Blocks, она в консоли после выполнения программы пишет кол-во секунд с тысячными долями (т.е. по сути количество миллисекунд).
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 17.07.2011, 02:23   #13
YourLastSong
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 75
По умолчанию

У меня сейчас нет возможности его использовать.

Если не сложно, не могли бы вы сделать замеры для функций printf, putchar, puts, write и WriteFile, пожалуйста?
YourLastSong вне форума Ответить с цитированием
Старый 17.07.2011, 02:28   #14
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Я вижу в исходниках printf, putchar, puts, _write
Все они обращаются к WriteFile.
EUGY вне форума Ответить с цитированием
Старый 17.07.2011, 02:39   #15
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Код:
printf     32
std::cout  32
puts       53
putchar    34
Замеры на линуксе, компилятор g++.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 17.07.2011, 02:56   #16
TDrive
Пользователь
 
Регистрация: 22.07.2009
Сообщений: 95
По умолчанию

Цитата:
Сообщение от YourLastSong Посмотреть сообщение
Так вот в чём проблема - никак не могу понять, чем лучше измерить время в данном случае, кроме GetTickCount?
GetTickCount отлично подходит только функцию в цикле выполняй тысяч 100 раз для чистоты теста.


Цитата:
Сообщение от YourLastSong Посмотреть сообщение
Как это узнать? Можно поподробнее?
ну идея в том что система ввод-вывод для экрана клавиатуры жестких дисков сетевой карты... одна и та же и в некоторых случаях можно просто отправлять данные по адресу, а в некоторых нужно дожидаться готовности устройства принять данные. поэтому придумали разные буферы. соответственно разные функции ввода вывода отличаются по скорости. а ещё некоторые функции используют прерывания биоса а некоторые winAPI....

это уже книжки по архитектуре ОС читать нужно, но могу сказать что в винде вывод на консоль текста убогий.
TDrive вне форума Ответить с цитированием
Старый 17.07.2011, 02:58   #17
TDrive
Пользователь
 
Регистрация: 22.07.2009
Сообщений: 95
По умолчанию

Цитата:
Сообщение от Granus Посмотреть сообщение
Код:
printf     32
std::cout  32
puts       53
putchar    34
Замеры на линуксе, компилятор g++.
а в винде какие результаты?
TDrive вне форума Ответить с цитированием
Старый 17.07.2011, 04:21   #18
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
Сообщение от TDrive
а в винде какие результаты?
А винду я для этого устанавливать не хочу)
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 17.07.2011, 04:31   #19
TDrive
Пользователь
 
Регистрация: 22.07.2009
Сообщений: 95
По умолчанию

заинтересовал меня этот вопрос)

вот программа:

Код:
#include <iostream.h> 
int main(){
    for(int x=0;x<1000000;x++){std:cout << "test";}
    return 0;
}
время замерял секундомером на сотовом)
linux ubunta g++
8-9 секунд (минус скорость моей реакции нажатия кнопки сотового)

win7 dev-C++
1 минута 23 секунды

разница в 10 раз!!!

так что консоль это самое слабое место винды. могу предложить топикстартеру воспользоваться каким нибудь liveCD linuxа если время вывода информации на консоль так критично.
TDrive вне форума Ответить с цитированием
Старый 17.07.2011, 04:44   #20
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Но даже за 1 минуты и 23 секунды нет никакой возможности успеть прочесть 1000000 строк. Действительно ли есть необходимость выводить все эти строки на консоль? Ведь Если количество строк так велико, что это начинает сказываться на производительности программы, то есть ли смысл в высокой скорости вывода? Ведь никто не успеет ничего прочесть.
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват вывода Яр|/||< (^_^) Win Api 5 02.02.2011 23:08
спецификатор формата вывода функции printf Айат Помощь студентам 3 21.02.2010 13:12
Ошибка в функции вывода новостей smn1 PHP 2 07.09.2009 08:09
ограничение вывода Interfere Общие вопросы C/C++ 2 07.05.2009 21:00
Вид вывода в С++ Rembo Общие вопросы C/C++ 4 04.01.2008 20:40