crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Теория, как сократить объём трафика по сети, Что-то вроде дельта кодирования..
512es
  опции профиля:
сообщение 17.1.2012, 18:28
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 135
Регистрация: 31.10.2008
Пользователь №: 407

Спасибо сказали: 5 раз(а)




Репутация:   0  


Доброго времени суток!

Упрошённая схема:
Имеется 2 компьютера, клиент и сервер.
Клиент достаточно часто запрашивает одни и те же данные (QByteArray) у сервера.
Объём данных будем считать относительно большим.
Иногда данные могут незначительно меняться.

Задача:
Максимально сократить объём трафика между клиентом и сервером.

Возможно запоминание последних отданных данных клиенту на стороне сервера и последних принятых данных клиентом на стороне клиента.

Сейчас используется qCompress. Заметный выигрыш в размере пакетов, но всё равно, теоретически, можно посылать только различия между новым и предыдущим QByteArray + хеш, указывающий на то, какие данные были использованы при сравнении (на всякий случай, для коррекции ошибок).

Смотрю в сторону Delta кодирования. Но помоему это немного не то, или я просто не умею его использовать. Как его адаптировать для сравнения двух массивов данных?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
512es
  опции профиля:
сообщение 20.1.2012, 11:13
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 135
Регистрация: 31.10.2008
Пользователь №: 407

Спасибо сказали: 5 раз(а)




Репутация:   0  


Алексей1153, скорость да, уступает простому вычитанию, зато в трафике выигрыш реальный.

Кстати, ещё по поводу передачи экрана. Представьте ситуацию когда окно двигают по однородному фону рабочего стола. Если использовать простое вычитание, то трафик будет достаточно большой, так как надо перерисовывать всю затронутую область экрана. А если использовать умные алгоритмы то окно не придётся постояно передавать. Этот блок данных как был неизменным, так и останется. Просто он будет подвинут вслед за окном.

Скорость создания патча bsdiff-ом на моих опытах составляет около 1.5 секунды, а скорость применения патча всего 0.02 секунды. В реалтайм программах ксожалению врядли получится использовать.
У bsdiff-а больше область использования в заранее подготавливаемых данных. Например кодирование фильмов, бекапы, обновлялки.

zloiia,
google-diff-match-patch это для текстовых данных. А тут речь идёт о бинарных.
А про qCompress сказано ещё в первом посте. Так и используется сейчас. Просто разница в том что, например, передавать 580кб (архив) данных или 40кб (дельта-патч)? Если цифры кажутся не внушительными, помножте оба значения на 10, на 100, на 1000...

Сообщение отредактировал 512es - 20.1.2012, 11:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- 512es   Теория, как сократить объём трафика по сети   17.1.2012, 18:28
- - 512es   Ковыряю пример с википедии по дельта-кодированию. ...   17.1.2012, 20:49
- - BRE   Вот это почитай: http://ru.wikipedia.org/wiki/Цело...   17.1.2012, 21:25
- - 512es   Эм, спс, почитал... Правда всё равно не понял как...   17.1.2012, 22:09
- - 512es   Тыкс.. Отвечаю сам себе. В задуманном мною аглори...   17.1.2012, 22:56
|- - Iron Bug   Цитата(512es @ 18.1.2012, 1:56) Но новый ...   17.1.2012, 23:32
- - 512es   Iron Bug, Но сделали же! А вообще, по теме: ...   17.1.2012, 23:54
|- - Iron Bug   Цитата(512es @ 18.1.2012, 2:54) Iron Bug,...   18.1.2012, 17:54
- - Алексей1153   незначительное изменение данных влияет на размер д...   18.1.2012, 7:32
- - 512es   Размер динамический. Вообщем утилита bsdiff просто...   18.1.2012, 17:37
- - Алексей1153   Iron Bug, и в GIF похоже делается. 512es, алгорит...   19.1.2012, 6:40
|- - Iron Bug   Цитата(Алексей1153 @ 19.1.2012, 9:40) При...   23.1.2012, 23:29
- - zloiia   Быть может немного не в тему, но может не стоит из...   19.1.2012, 7:04
- - Алексей1153   zloiia, всё зависит от критичности времени обработ...   19.1.2012, 7:33
- - 512es   Алексей1153, скорость да, уступает простому вычита...   20.1.2012, 11:13
- - Алексей1153   Цитата(512es @ 20.1.2012, 14:13) когда ок...   20.1.2012, 13:01
- - 512es   Алексей1153, кстати, а что вас заставило изобретат...   23.1.2012, 19:48
- - Алексей1153   512es, задача была - написать систему удалённого а...   23.1.2012, 19:58
- - Алексей1153   Цитата(Iron Bug @ 24.1.2012, 2:29) никако...   24.1.2012, 21:05
- - Iron Bug   Цитата(Алексей1153 @ 25.1.2012, 0:05) не ...   25.1.2012, 6:39
- - lanz   http://fabiensanglard.net/quake3/network.php Вооб...   20.2.2013, 16:59


Ответить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.4.2024, 19:12