-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


goto vs break & continue

Суббота, 18 Июля 2020 г. 21:16 + в цитатник
Qraizer:
Цитата Qraizer @
Я бы не стал доверять программе, написанной в нарушение Стандарта и неверно считающей оверхед. Совсем не верно. Вообще.
Чтобы далеко не посылать.
Первые два load-а читают посимвольно из-за того, что не знают, сколько там данных. Это также вызывает постоянные реаллокации приёмного буфера. Вторые два load-а читают скопом весь файл, заранее сконфигурировав приёмный буфер на требуемый размер. Что-то это мне напоминает... Ах да, std::vector vs T*. Ну разве не прелесть.

Добавлено
Быстренько налобал правильный тест. Теперь все load-ы читают посимвольно в буфер достаточного размера. Полюбуйтесь:
    File test1.fil
    C++ istreambuf_iterator : .......... 6906 us
    C++ stream::rdbuf : .......... 7737 us (0.89)
    libc fread : .......... 33049 us (0.21)
    POSIX read : .......... 2367907 us (0.00)
    File test2.fil
    C++ istreambuf_iterator : .......... 13458 us
    C++ stream::rdbuf : .......... 15141 us (0.89)
    libc fread : .......... 64100 us (0.21)
    POSIX read : .......... 4671184 us (0.00)
    File test4.fil
    C++ istreambuf_iterator : .......... 29175 us
    C++ stream::rdbuf : .......... 32303 us (0.90)
    libc fread : .......... 133641 us (0.22)
    POSIX read : .......... 9758374 us (0.00)
    File test8.fil
    C++ istreambuf_iterator : .......... 60140 us
    C++ stream::rdbuf : .......... 65874 us (0.91)
    libc fread : .......... 267079 us (0.23)
    POSIX read : .......... 19191693 us (0.00)
    File test16.fil
    C++ istreambuf_iterator : .......... 117328 us
    C++ stream::rdbuf : .......... 130321 us (0.90)
    libc fread : .......... 547789 us (0.21)
    POSIX read : .......... 38444935 us (0.00)
    File test32.fil
    C++ istreambuf_iterator : .......... 243340 us
    C++ stream::rdbuf : .......... 265980 us (0.91)
    libc fread : .......... 1090477 us (0.22)
    POSIX read : .......... 75824446 us (0.00)

https://forum.sources.ru/index.php?showtopic=362619&view=findpost&p=3834567

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку