@std_FoCuS

Фрагментированный ввод/вывод: быстрее ли стандартного?

Роберт Лав в своей книге "Linux: системное программирование" пишет, что readv/writev при небольщих сегментах (ядро выделяет для этого память на стеке до 8 штук) можно получить значительный прирост в производительности. Я начал тестить. https://pastebin.com/LnJr7EW8 при размере буфера в 4096 получается время примерно одинаковое. А вот если взять небольщой размер буфера - readv/writev быстрее чуть ли не в 1.5 раза. Автор писал про кол-во элементов (кол-во сегментов) - что их кол-во менее 8 дает прирост производительности, но ни слова не сказал про размер массивов в этих сегментах. Дайте пжста обратную связь:
1. корреткно ли я делал замеры времени? (может есть какая библиотека на Си или прочее?).
2. Правильно ли я инициализоровал сегменты ? (может есть упрощенная форма)
3. Как правильно подобрать размер сегмента?
4. В каких случаях лучше использовать фрагментированный ввод/вывод? (любые советы по его использованию)
  • Вопрос задан
  • 73 просмотра
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
1. корреткно ли я делал замеры времени? (может есть какая библиотека на Си или прочее?).

Я подозреваю, что ты замерил в основном время вывода в stdout, если он не был перенаправлен в файл.

2. Правильно ли я инициализоровал сегменты ? (может есть упрощенная форма)

Вполне.

3. Как правильно подобрать размер сегмента?

Размеры сегментов диктуются структурой читаемых данных. Если у данных нет структуры -- читай всё с помощью read в один большой массив.

4. В каких случаях лучше использовать фрагментированный ввод/вывод? (любые советы по его использованию)

Когда данные имеют чётко выраженную структуру и время выполнения системного вызова приближается ко времени требуемому для копирования данных. Переход с read на readv позволяет не заниматься копированием данных в юзерспейсе и сэкономить N-1 системный вызов при одновременном чтении N сегментов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
АКМЭ сервис Санкт-Петербург
от 80 000 до 100 000 руб.
Eltex Новосибирск
от 80 000 руб.
ИТ-ЛИНК Курган
До 200 000 руб.
21 июл. 2019, в 18:03
1000 руб./за проект
21 июл. 2019, в 17:53
3000 руб./за проект
21 июл. 2019, в 16:20
10000 руб./за проект