Продюсер/потребитель - диск ввода/вывода
У меня есть сжатый файл на диске, который разделен на блоки. Я прочитал блок с диска, распакуя его в память и прочитав данные.
Можно создать производителя/потребителя, один поток, который восстанавливает сжатые блоки с диска и помещает в очередь и другой поток, который распаковывает и считывает данные?
Будет ли производительность лучше?
Спасибо!
Я подозреваю, что поток, который распаковывает данные, будет тратить большую часть своего времени на ожидание потока, который считывает сжатые блоки с диска.
Я был бы удивлен, если декомпрессия, связанная с процессором, заняла больше времени, чем IO-привязка, считывающая блоки с диска.
Да, это можно настроить таким образом. Если вы увидите, что улучшение производительности сильно зависит от машины, точная природа того, что вы делаете с распакованными данными, и т.д. Если это не так уж сложно, и ваш набор данных существенный, я бы предложил сделать это и измерения, чтобы увидеть, если он быстрее. Если ничего другого, это похоже на работу, которую вам нужно будет сделать, чтобы использовать какую-то инфраструктуру уменьшения карты.
Еще в рубрике
- Вопросы
- Producer-consumer
- Продюсер/потребитель - диск ввода/вывода