Чтение последовательного файла — сжатый файл против несжатого

Я ищу самый быстрый способ прочитать последовательный файл с диска.
В некоторых статьях я читал, что если бы я сжал файл, используя, например, lz4, я мог бы добиться лучшей производительности, чем чтение плоского файла, потому что я минимизировал бы операции ввода-вывода.

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

Я нашел это отметки:
http://skipperkongen.dk/2012/02/28/uncompressed-versus-compressed-read/
http://code.google.com/p/lz4/source/browse/trunk/lz4demo.c?r=75

Действительно ли возможно улучшить производительность чтения последовательного файла сжатия по сравнению с несжатым? Что я делаю неправильно?

я

2

Решение

Да, с помощью сжатия можно улучшить чтение с диска.

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

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

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

2

Другие решения

Это зависит от скорости диска и скорости декомпрессии и экономии места. Я уверен, что вы можете поместить это в формулу.

Реально ли улучшить производительность чтения компрессов?
последовательный файл поверх несжатого? Что я делаю неправильно?

Да, это возможно (пример: zip-файл объемом 1 КБ может содержать 1 ГБ данных — скорее всего, он будет быстрее читать и распаковывать ZIP-архив).

Бенчмарк различных алгоритмов и их скорости декомпрессии. Для этого есть сайты, посвященные тестированию сжатия. Существуют также специальные высокоскоростные алгоритмы сжатия.

Вы также можете попытаться изменить сам формат данных. Может быть, переключиться на protobuf, который может быть быстрее и меньше, чем CSV.

0

По вопросам рекламы [email protected]