|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.07.2011, 01:09 | #1 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 75
|
Функции вывода
Здравствуйте, уважаемые господа.
По некоторым причинам мне очень важна скорость вывода различных строк и символов на экран консоли, в связи с чем задумался об использовании какой-либо конкретной функции. Разумеется, std::cout в этом случае, я думаю, лучше не использовать. Проверил скорость выполнения printf ("%c", ch) и putchar (ch) — оказалось, что первый способ работает быстрее. Почему? Ведь putchar не должен разбирать формат строки. Вместо printf для константных строк, я думаю, лучше будет использовать puts, да? Что ещё можно использовать в данном случае? Действительно ли write работает быстрее или нет всё же? Заранее благодарю за возможные ответы. |
17.07.2011, 01:44 | #2 |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Ну мне кто-то говорил, что в С++ быстрее iostream, т.е. std::cout, т.к. специально для плюсов написана и оптимизирована. А putchar() возможно работает медленнее потому что он каждый раз обращается к потоку вывода. Но это лишь предположение)
Форматируйте код, будьте людьми.
|
17.07.2011, 01:47 | #3 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 75
|
Нет, std::cout точно работает медленнее, это даже просто так видно, если выводить любую строку в цикле.
|
17.07.2011, 01:58 | #4 |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Ну у меня std::cout и printf работают практически с одной скоростью.
Форматируйте код, будьте людьми.
|
17.07.2011, 02:01 | #5 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 75
|
Как вообще лучше измерить скорость работы той или иной функции? Я при этом использую GetTickCount просто.
|
17.07.2011, 02:11 | #6 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Сдается мне, что должно сводится к чему-то такому:
Код:
|
17.07.2011, 02:13 | #7 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 75
|
Так ведь запись в файл. Или там присутствует возможность передать в качестве параметра вывод на экран консоли?
|
17.07.2011, 02:13 | #8 |
Пользователь
Регистрация: 22.07.2009
Сообщений: 95
|
а что за программа? если есть возможность написать её под дос то можно попробовать напрямую обращаться к видеопамяти по адресу (не помню точно вроде 0xB8000000).
на ассемблере таким баловался, в теории должно быть быстрее. но там возможно придётся разобраться в графических режимах. а ещё от версии винды может зависеть, политика майкрософта против "лишних" возможностей программиста, они это защитой от вирусов называют) другой вариант это протестировать все возможные функции вывода и выбрать самую быструю. ещё есть такая вещь как системный буфер. некоторые функции сначала набирают символы в буфер а потом выводят на экран сразу всю строчку из буфера. тоже на скорость влияет причём в разных ситуациях по разному. ещё могу сказать что когда программировал на перле заметил что вывод текста в винде на несколько порядков медленнее чем в линуксе. если программу пишеш для себя попробуй перейти на линукс. |
17.07.2011, 02:17 | #9 | |||
Пользователь
Регистрация: 12.12.2010
Сообщений: 75
|
Цитата:
Цитата:
Цитата:
|
|||
17.07.2011, 02:17 | #10 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перехват вывода | Яр|/||< (^_^) | 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 |