Дозвольте припустити, що мені потрібно надсилати деякі дані з одного комп'ютера на інший через досить швидку мережу ... наприклад, стандартне з'єднання 100 Мбіт (~ 10 Мб / с). Мої дискові накопичувачі стандартного жорсткого диска, тому їх швидкість становить десь від 30 Мб / с до 100 МБ / с. Тому я здогадуюсь, що стиснення даних на ходу може допомогти.
Але ... я не хочу бути обмеженим процесором. Якщо я виберу алгоритм, інтенсивний для процесора, передача буде йти повільніше, ніж без стиснення.
З компресорами типу GZIP та BZIP2 це важко, оскільки ви зазвичай встановлюєте силу стиснення один раз на всю передачу, а мої потоки даних іноді легко, іноді важко стискати - це робить процес неоптимальним, оскільки іноді я не використовую повний процесор, а іноді пропускна здатність недостатньо використовується.
Чи існує програма стиснення, яка б адаптувалася до поточної процесорної / пропускної здатності і потрапила в солодке місце, щоб передача була оптимальною? Ідеально підходить для Linux, але мені все одно цікаво про всі рішення. Я хотів би побачити щось сумісне з декомпресорами GZIP / BZIP2, але це не обов'язково.
Тому я хотів би оптимізувати загальний час передачі, а не просто кількість байтів, що надсилаються.
Також мені не потрібна декомпресія в режимі реального часу ... стиснення в реальному часі достатньо. Хост призначення може обробляти дані пізніше у вільний час. Я знаю, що це не сильно змінюється (стиснення, як правило, набагато інтенсивніше процесора, ніж декомпресія), але якщо є рішення, яке може використовувати цей факт, тим краще.
Кожен раз, коли я передаю різні дані, я дуже хочу зробити ці одноразові передачі якомога швидшими. Тому я не отримаю користі від отримання декількох передач швидше через сильне стиснення.
Дякую,