C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Можно ли архивировать строки длины ~100 символов?
Тиграша
Отправлено: 04.02.2005, 11:59


Ученик-кочегар

Группа: Участник
Сообщений: 24



Хочу передавать много строк длины ~100 символов с машины на машину по низкоскоростному каналу. Поэтому хочется эти строки как-нибудь поджать, причём комп на этом деле будет не сильно крутой.

Мало ли, вдруг кто чего посоветует новичку...
olegenty
Отправлено: 04.02.2005, 12:05


Ветеран

Группа: Модератор
Сообщений: 2412



жми, но по возможности я бы ещё их в пакеты штук по 100 объединял — иначе сжатие не будет давать серьёзных плюсов (по объёму) зато будут минусы (по быстродействию)
Тиграша
Отправлено: 04.02.2005, 12:13


Ученик-кочегар

Группа: Участник
Сообщений: 24



Вот так ответил wink.gif
Чем жать-то?
А в кучу их валить нельзя — мне каждую строку контролировать придётся, и именно по отдельности.
Просто канал — хуже некуда...
А минусы по быстродействию — это даже лучше. Будет повод тачку под задачу могучую с конторы содрать. Если начальство спросит — я на тебя ссылаться буду biggrin.gif
Treumer
Отправлено: 04.02.2005, 12:20


Станционный диспетчер

Группа: Участник
Сообщений: 92



QUOTE (Тиграша @ 04/02/2005, 13:15)
Вот так ответил wink.gif
Чем жать-то?
А в кучу их валить нельзя — мне каждую строку контролировать придётся, и именно по отдельности.
Просто канал — хуже некуда...
А минусы по быстродействию — это даже лучше. Будет повод тачку под задачу могучую с конторы содрать. Если начальство спросит — я на тебя ссылаться буду biggrin.gif

На мой взгляд — надо думать над структурой данных как таковой!

Что там у тебя в этих строках ?!
Имена-фамилии-явки ? biggrin.gif

Ну так создай таблицу — передай ее раз, а потом шли одну цифру — указатель в таблице.
А коли таблица меняется — сделай доп. команду — удалить/вставить...

вот и все дела...
Тиграша
Отправлено: 04.02.2005, 12:31


Ученик-кочегар

Группа: Участник
Сообщений: 24



Ну вот!
Я примерно то и делаю.
Вот и получается эта куча строк biggrin.gif

И вот ещё на краю сознания какая мысль есть:
Слухом земля полнится, что Интербася хранил blob и varchar в архивированном виде. А можно ли на нулевой машине получить их исходное представление, и при получении на другой машине писать их "напрямую"?
Хотя ставить ради этого FB... sad.gif

Отредактировано Тиграша — 04/02/2005, 13:43
olegenty
Отправлено: 04.02.2005, 12:52


Ветеран

Группа: Модератор
Сообщений: 2412



не, в первичном вряд ли получишь.
а если же вообще, то вариант с распределением БД по тачкам... ну как вам сказать... дешевле сеть кинуть, чем сопровождать такого монстра. сколько всего клиентов? даже если порядка 10, и то, на каждом иметь по БД, реплицировать всё это как-то... грустно...
Тиграша
Отправлено: 04.02.2005, 13:03


Ученик-кочегар

Группа: Участник
Сообщений: 24



Расстояния нетривиальные.
~сотни км.
А на орбиту не пускают sad.gif
Treumer
Отправлено: 04.02.2005, 13:06


Станционный диспетчер

Группа: Участник
Сообщений: 92



QUOTE (olegenty @ 04/02/2005, 13:54)
не, в первичном вряд ли получишь.
а если же вообще, то вариант с распределением БД по тачкам... ну как вам сказать... дешевле сеть кинуть, чем сопровождать такого монстра. сколько всего клиентов? даже если порядка 10, и то, на каждом иметь по БД, реплицировать всё это как-то... грустно...

Плохая связь при необходимости передачи больших объемов информации — это всегда грустно. По определению...
И лечится либо уменьшением траффика, либо улучшением связи...

Только вот сомнения меня берет, что есть способы эффективно сжать строки длиной в 100 байт, если там хотя бы 30-40 различных символов встречаются..

Опят же — ну сожмешь 100 байт в 50..
Сильно что-то изменится ?! ohmy.gif
Очень сомневаюсь...
Тиграша
Отправлено: 04.02.2005, 13:15


Ученик-кочегар

Группа: Участник
Сообщений: 24



"Опят же — ну сожмешь 100 байт в 50.." — вот вот! И скорость повышу в 2 раза biggrin.gif
А что, всё-таки есть такой способ хранения строк в IB? Значит в принципе есть подобный алгоритм архивирования таких объектов?
Treumer
Отправлено: 04.02.2005, 13:26


Станционный диспетчер

Группа: Участник
Сообщений: 92



QUOTE (Тиграша @ 04/02/2005, 14:17)
"Опят же — ну сожмешь 100 байт в 50.." — вот вот! И скорость повышу в 2 раза biggrin.gif
А что, всё-таки есть такой способ хранения строк в IB? Значит в принципе есть подобный алгоритм архивирования таких объектов?

Мне кажется ползти вместо 1 км/час целых 2 км/час вряд ли поможет черепахи уйти от хищника который выдает 10 км час smile.gif

То, что в БД что-то архивируется не говори о том, что там арзивируются строки в 100 байт! Там ведь и 10 кб данныз может быть.
Мжет архивирование только для данных длиной больше определенно (например 1 кб) приминяются ?!

Ну что за данные то хоть ?
Бинарные ? Текстовые ?
Может возможно таки создать словарик последовательностей так 100-200.
А потом кодировать из 1-2 байтами..

Тут фактически надо свое архивирование — специфическое — придумывать, стандартные методы явно не помогут!

Ну или так: ксли, к примеру, в посылке могут быть только данные от 0 до 127 — уже можно 1 бит съэкономить на 1 байте... Т.е. около 12.5 процентов...
Ну и т.п.
AVC
Отправлено: 04.02.2005, 13:35


Ветеран

Группа: Модератор
Сообщений: 1583



Можно вставить свои 5коп?
На строках длиной до 100 байт серьезного улучшения не даст ни один метод.
Чудес не бывает. Сжатие происходит либо за счет потери информации (jpeg), либо за счет исользования внутренних закономерностей сообщения (сжатие текстов). Без анализа ваших сообщений посоветовать спооб затруднительно. Скорее всего придется писать что то своё.

PS
QUOTE

А минусы по быстродействию — это даже лучше. Будет повод тачку под задачу могучую с конторы содрать

Начинать можно прямо сейчас. Без сжатия.

Немного опоздал с отправкой, но это ведь ничего?

Отредактировано AVC — 04/02/2005, 13:38
Тиграша
Отправлено: 04.02.2005, 13:37


Ученик-кочегар

Группа: Участник
Сообщений: 24



Спасибо all, пошёл придумывать своё...
Будут у all мысли — пишите, а?
Treumer
Отправлено: 04.02.2005, 13:42


Станционный диспетчер

Группа: Участник
Сообщений: 92



QUOTE (Тиграша @ 04/02/2005, 14:39)
Спасибо all, пошёл придумывать своё...
Будут у all мысли — пишите, а?

Да я бы написал мысли, только ты так и не написал что там у тебя за данные:
встречаются ли устойчивые последовательности (типа "слова"), какой набор "символов" используется...
Есть ли зарезервированные символы протокола ? Типа символ "СТАРТ"/ символ "СТОП" и т.п.
Тиграша
Отправлено: 04.02.2005, 13:52


Ученик-кочегар

Группа: Участник
Сообщений: 24



А это уже сделано — про командные последовательности, в смысле.
Я пока тренируюсь на наборах строк, полученных пропусканием через UUdecode\encode архивов с вариациями длин строк с моей дисперсией и матожиданием. Подобные строки очинно напоминают мои тестовые sad.gif .
Так что в смысле оптимизации исходных строк — тут мне ловить видимо нечего...
Treumer
Отправлено: 04.02.2005, 14:03


Станционный диспетчер

Группа: Участник
Сообщений: 92



QUOTE (Тиграша @ 04/02/2005, 14:54)
А это уже сделано — про командные последовательности, в смысле.
Я пока тренируюсь на наборах строк, полученных пропусканием через UUdecode\encode архивов с вариациями длин строк с моей дисперсией и матожиданием. Подобные строки очинно напоминают мои тестовые sad.gif .
Так что в смысле оптимизации исходных строк — тут мне ловить видимо нечего...

Ну, тогда остается купить модем покруче ZyXEL — к примеру — и уповать, что он сможет чего-то добиться чего-то в деле повышения скорости передачи данных... biggrin.gif
Konstantine
Отправлено: 04.02.2005, 17:24


Мастер участка

Группа: Модератор
Сообщений: 545



а передача идёт по одной строке или пачками???
если пачками, то можно консольно выполнять архиватор (напр. ZIP или RAR) и передавать пакованый файл... + ко всему (если данные ценные) его можно ключиком закрывать... символов на 20 и т.д.
Тиграша
Отправлено: 09.02.2005, 13:22


Ученик-кочегар

Группа: Участник
Сообщений: 24



Передаю по одной строке, ни в коем случае не конгломератом.
То есть по сути паковать надо именно строку, а не файло, и именно в памяти.
А нет таких компонент, которые это бы реализовывали? Уж больно у меня своё тяжёлое получается...
2Treumer — канал хитрый. Не медь cool.gif
Konstantine
Отправлено: 09.02.2005, 15:33


Мастер участка

Группа: Модератор
Сообщений: 545



если можешь — напиши хоть несколько этих самых строк.... или расскажи как они получаются... просто если там символы АБСОЛЮТНО случайны, то ты ни байта не сможешь сжать
Treumer
Отправлено: 10.02.2005, 16:33


Станционный диспетчер

Группа: Участник
Сообщений: 92



QUOTE (Тиграша @ 09/02/2005, 14:24)
Передаю по одной строке, ни в коем случае не конгломератом.
То есть по сути паковать надо именно строку, а не файло, и именно в памяти.
А нет таких компонент, которые это бы реализовывали? Уж больно у меня своё тяжёлое получается...
2Treumer — канал хитрый. Не медь cool.gif

Канал хитрый, данные хитрые..
Что тут остается делать ?!
Только пойти пить пиво smile.gif

Вернуться в Вопросы программирования в C++Builder