Как можно было бы предсказать время выполнения и / или результирующую степень сжатия при сжатии файла с использованием определенного алгоритма сжатия без потерь? Меня особенно больше беспокоит локальное сжатие, поскольку, если вы знаете время и степень сжатия для локального сжатия, вы можете легко рассчитать время для сетевого сжатия на основе доступной в настоящее время пропускной способности сети.
Допустим, у вас есть некоторая информация о файле, такая как размер, избыточность, тип (для простоты можно сказать текст). Может быть, у нас есть какие-то статистические данные из реальных предыдущих измерений. Что еще потребуется для прогнозирования времени выполнения и / или степени сжатия (даже если она очень приблизительная).
Только для локального сжатия размер файла будет иметь значение, поскольку фактическое чтение и запись данных на / с носителя данных (SD-карта, жесткий диск) займет более доминирующую часть от общего выполнения.
Фактическая часть сжатия, вероятно, будет зависеть от избыточности / типа, поскольку большинство алгоритмов сжатия работают путем сжатия небольших блоков данных (100 КБ или около того). Например, файлы HTML / Javascripts большего размера сжимаются лучше, поскольку они имеют большую избыточность.
Я предполагаю, что существует также проблема планирования, но это, вероятно, можно было бы проигнорировать для грубой оценки.
Это вопрос, который иногда был у меня в голове для тишины. Мне было интересно, может ли некоторый код с низкими накладными расходами (скажем, на сервере) предсказать, сколько времени потребуется для сжатия файла перед выполнением фактического сжатия?