Продюсер/потребитель - диск ввода/вывода

113
13

У меня есть сжатый файл на диске, который разделен на блоки. Я прочитал блок с диска, распакуя его в память и прочитав данные.


Можно создать производителя/потребителя, один поток, который восстанавливает сжатые блоки с диска и помещает в очередь и другой поток, который распаковывает и считывает данные?


Будет ли производительность лучше?


Спасибо!

спросил(а) 2010-06-07T01:39:00+04:00 10 лет, 8 месяцев назад
1
Решение
61

Я подозреваю, что поток, который распаковывает данные, будет тратить большую часть своего времени на ожидание потока, который считывает сжатые блоки с диска.

Я был бы удивлен, если декомпрессия, связанная с процессором, заняла больше времени, чем IO-привязка, считывающая блоки с диска.

ответил(а) 2010-06-07T02:36:00+04:00 10 лет, 8 месяцев назад
44

Да, это можно настроить таким образом. Если вы увидите, что улучшение производительности сильно зависит от машины, точная природа того, что вы делаете с распакованными данными, и т.д. Если это не так уж сложно, и ваш набор данных существенный, я бы предложил сделать это и измерения, чтобы увидеть, если он быстрее. Если ничего другого, это похоже на работу, которую вам нужно будет сделать, чтобы использовать какую-то инфраструктуру уменьшения карты.

ответил(а) 2010-06-07T01:43:00+04:00 10 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема