Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.02.2006, 19:48
Double вне форума Посмотреть профиль Отправить личное сообщение для Double Найти все сообщения от Double
  № 1  
Ответить с цитированием
Double
 
Аватар для Double

Регистрация: Mar 2001
Сообщений: 1,147
По умолчанию компрессия данных (частный случай)

Дано: ~270К числовых данных с разделителями (числа от 0 до 180 с точностью до 6 знака)
Найти: метод представления данных, при котором вся эта инфа будет меньше весить (без потерь).

Что приходит в голову: myNumber.toString(36) - переводим числа в строки и получаем около 125К данных (предварительно myNumber избавили от точки умножением на 10^6). уже неплохо, но всегда хочется бОльшего.

Просьба1: алгоритмы Хафмана, Лемпеля-Зива-Велча и подобные не предлагать. Хочется оперировать чем-нить банальным, как toString например (потому и раздел для треда выбран про флеш).
Просьба2: высказывать мнения, не обязательно готовые решения.

PS. а может быть больше уже не схитришь?..
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит.

Старый 27.02.2006, 00:50
Usnul вне форума Посмотреть профиль Отправить личное сообщение для Usnul Посетить домашнюю страницу Usnul Найти все сообщения от Usnul
  № 2  
Ответить с цитированием
Usnul
 
Аватар для Usnul

Регистрация: Mar 2001
Адрес: во сне
Сообщений: 2,701
Отправить сообщение для Usnul с помощью ICQ
напиши функцию замены стринга и замени "10^" на "e", это тебе сократит размер еще на 30-40%
__________________
I'm only happy when it rains.
Waka Laka

Старый 27.02.2006, 01:26
K.A.T.A.F.A.L.K.E.R вне форума Посмотреть профиль Отправить личное сообщение для K.A.T.A.F.A.L.K.E.R Найти все сообщения от K.A.T.A.F.A.L.K.E.R
  № 3  
Ответить с цитированием
K.A.T.A.F.A.L.K.E.R
 
Аватар для K.A.T.A.F.A.L.K.E.R

Регистрация: Jul 2005
Адрес: Go, Ukraine!
Сообщений: 787
Отправить сообщение для K.A.T.A.F.A.L.K.E.R с помощью ICQ
Разделяй число на группы по 2 цифры (например, 12214182488 раздели как "12" "21" "14" "18" "24" "88"), гаждую такую группу представляй в виде одного символа - как, например, fromCharCode(12). Склеивай, пересылай По идее, сжатие в два раза
__________________
...я люблю людей!..

Старый 27.02.2006, 01:30
K.A.T.A.F.A.L.K.E.R вне форума Посмотреть профиль Отправить личное сообщение для K.A.T.A.F.A.L.K.E.R Найти все сообщения от K.A.T.A.F.A.L.K.E.R
  № 4  
Ответить с цитированием
K.A.T.A.F.A.L.K.E.R
 
Аватар для K.A.T.A.F.A.L.K.E.R

Регистрация: Jul 2005
Адрес: Go, Ukraine!
Сообщений: 787
Отправить сообщение для K.A.T.A.F.A.L.K.E.R с помощью ICQ
Цитата:
Сообщение от Double
Что приходит в голову: myNumber.toString(36) - переводим числа в строки и получаем около 125К данных
Судя по всему, боян вышел... Сжатие в два раза, похоже, уже имеется...
__________________
...я люблю людей!..

Старый 27.02.2006, 08:57
Double вне форума Посмотреть профиль Отправить личное сообщение для Double Найти все сообщения от Double
  № 5  
Ответить с цитированием
Double
 
Аватар для Double

Регистрация: Mar 2001
Сообщений: 1,147
Usnul, ну избавление от плавающей точки делаю в программе-генераторе нового формата данных, там экономия не столь важна
KATAFALKER, совет дельный, но имеем шанс получить код какого-либо непечатаемого символа, или символа-разделителя, что недопустимо. Сделал проще - взял сотню символов и конвертнул из десятичной в 100-ричную (суть та же, что и в твоём посте, только граблей нет с неприятными символами). 102К и новая проблема - теперь у клиента тормоза с распаковкой (процент сжатия тут для частного случая, можно ведь данные и нулями набить). Похоже надо пробовать пересесть на бинарные операции, но есть слабое подозрение, что они не сильно ускорят просчёт. Кто-нить пытался оптимизировать громоздкие вычисления флешевыми бинарными методами?

И ещё мысль: от точки я неверно избавляюсь! хорошо, если я прессую число 9.999999, но плохо, если у меня 9 (после умножения получаем 9000000 - 6 лишних знаков). надо целую и дробную часть паковать раздельно!
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит.

Старый 27.02.2006, 15:26
__i вне форума Посмотреть профиль Отправить личное сообщение для __i Найти все сообщения от __i
  № 6  
Ответить с цитированием
__i
 
Аватар для __i

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
ну незнаю в тему или нет, но можеше часть перед запятой прадставлять в виде символа, количество символов которое можно закодировать в 1 байте = 256, т.е. твои 180 как раз влазят.

Теперь относительно умножения на 10^6 - если у тя все дробные части числа содержат по 6 символов то это нормально а если какаято часть то плохо

Смотри как те такой способ (правда гемор %)) )

Целую часть конвертишь как я те сказал вместо числа 123, лепишь символ с его кодом, после него пишешь дробную часть, если она == 6 символам то нормально, если меньше то лепишь в конец строки какой -то разделитель.

ща попробую закодировать этим способом строку :

85.99999 , 77.040000, 55.125000, 44.123456 - 33 символа
получиться:
U999999M04»7125»,123465 - 23 символа вроде %)

U - символ с номером 85, M c номером 77 и тд.....
» - разделитель, символ с номером 187 типа чтоб номер разделителя был больше 180.


Последний раз редактировалось __i; 27.02.2006 в 15:41.
Создать новую тему Ответ Часовой пояс GMT +4, время: 00:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:48.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.