Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > форматированный ввод-вывод. производительность. |
Автор: boostcoder 2.6.2011, 12:08 | ||||
всем привет. следующий код:
http://liveworkspace.org/code/1d747c7e7fe2a95423c646bfe48cde66 выдает такие результаты:
время в миллисекундах. любопытны три момента: 1. почему sscanf() работает так долго? 2. почему ostringstream работает быстрее чем sprintf() ? 3. может кто-то встречал реализацию форматировщиков ввода-вывода, работающую быстрее протестированных? спасибо. |
Автор: mes 2.6.2011, 12:20 |
хм.. а не кажется ли, что сравнение изначально нечестное ? |
Автор: boostcoder 2.6.2011, 12:32 |
в смысле, что stream`ам приходится выполнять по две операции? или что? |
Автор: mes 2.6.2011, 12:34 |
в том смысле что принтфы надо мерять хотя бы с тем же boost.format, а не с ними _голыми_. |
Автор: boostcoder 2.6.2011, 12:37 |
mes, мне нужно форматировать ввод-вывод. потому я выбрал два варианта: 1) sprintf/sscanf, 2) ostringstream/istringstream. кандидатуру boost.format не рассматривал. |
Автор: mes 2.6.2011, 12:41 |
надо отличать форматированный вывод, от форматированного по шаблону... у первого естесственно будет выйгрыш в скорости.. |
Автор: Alca 2.6.2011, 12:43 |
Это релизная сборка или дебажная? |
Автор: boostcoder 2.6.2011, 12:45 |
mes, значит мне нужен форматированный. Alca, gcc -O2 main.cpp -omain |
Автор: mes 2.6.2011, 12:49 |
глянул результаты : scanf действительно меденнее, чем должен был быть по идеи.. |
Автор: Alca 2.6.2011, 13:09 | ||||||||
http://codepad.org/kvs8ZG4Q
маленький фикс: ![]()
Добавлено через 1 минуту и 49 секунд http://codepad.org/4lZe5qee
![]() Добавлено через 5 минут и 48 секунд
а если с -03? |
Автор: boostcoder 2.6.2011, 14:53 | ||||
вот и я о том же! это не существенно. с О2:
с О3:
т.е. разницы почти никакой. |
Автор: Alca 2.6.2011, 15:57 | ||
http://gitorious.org/kirelagin_asm/sprintf/blobs/master/sprintf.asm |
Автор: boostcoder 2.6.2011, 16:01 |
хм.. ![]() жаль на асме... |
Автор: Alca 2.6.2011, 16:03 |
Мне попадались как-то, но не помню по каким ключевым словам гуглил |
Автор: boostcoder 2.6.2011, 17:37 |
похоже, придется stream`ы юзать. всем спасибо. |
Автор: volatile 3.6.2011, 00:41 | ||||
Жаль что время измерено в секундах, а не в тиках процессора. (нельзя сравнить результаты на разных машинах, так как зависит от скорости процессора). если интересно под виндой, студия 2008, машина довольно слабенькая (2007год) Intel 2160 1.8Ghz результаты в милисекундах
тоже самое в микросекундах, так как binary_test вообще не видно.
|
Автор: boostcoder 3.6.2011, 08:28 |
а как такое сделать в линуксе? |