У меня была идея быстро сравнить некоторые программы декомпрессии. Например, для gz я бы запустил команду:
timeout 10 zcat foo.gz | wc -c
Который будет измерять количество данных, которые декомпрессор может извлечь за 10 секунд.
Единственная проблема заключается в том, что он не работает: поскольку zcat уничтожен, wc также уничтожен, поэтому я не получаю счетчик байтов, просто Terminated
сообщение.
Итак, вопрос заключается в следующем: есть ли способ получить счет от wc , либо заблокировав сигнал, либо использовать альтернативу вместо wc, которая печатает результат, даже когда он получает термин-сигнал.
Конечно, есть альтернативы:
Запись во временный файл:
timeout 10 zcat foo.gz > /dev/shm/x ; du -sb /dev/shm/x ; rm -r /dev/shm/x
проблема в том, что он использует много памяти, а также может иметь некоторое снижение производительности.Вместо этого используется ulimit:
ulimit -t 10; zcat foo.gz | wc -c
это также работает, но измеряет только время процессора, поэтому замедление из-за операций ввода-вывода (например, из-за того, что сжатие хуже и нужно читать больше байтов с диска) не измеряется.Создание меньших тестовых файлов:
ну, это может сработать, конечно, и может быть самым хорошим решением. Тем не менее, это создает много временных файлов.