Сжатие для повышения производительности записи на жесткий диск - PullRequest
10 голосов
/ 10 января 2009

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

Этот вопрос связан с тем делом, с которым я работаю, когда программа последовательно генерирует и сбрасывает около 1-2 ГБ данных текстового журнала в необработанный текстовый файл на жестком диске, и я думаю, что это связано с IO. Могу ли я ожидать сокращения времени выполнения за счет сжатия данных до того, как они попадут на диск, или затраты на сжатие съедят любую выгоду, которую я смогу получить? Повлияет ли на это наличие второго бездействующего ядра?

Я знаю, что это будет зависеть от того, сколько ЦП используется для генерации данных, так что было бы неплохо иметь практические рекомендации о том, сколько потребуется времени простоя ЦП.


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

Ответы [ 12 ]

1 голос
/ 10 января 2009

Если это просто текст, то сжатие определенно может помочь. Просто выберите алгоритм сжатия и настройки, которые делают сжатие дешевым. «gzip» дешевле, чем «bzip2», и у обоих есть параметры, которые вы можете настроить для улучшения скорости или степени сжатия.

0 голосов
/ 10 января 2009

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

Однако, как прокомментировал Shog9:

Правила не помогут ты здесь. Это твой диск, твой процессор, и ваши данные. Установите тестовый набор и измерьте пропускную способность и загрузку процессора с и без сжатия - посмотреть, если это Стоит компромисс.

...