Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сохранение матрицы в файл, надо цивильный алгоритм 
:(
    Опции темы
shupg
Дата 21.7.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 21.6.2006

Репутация: нет
Всего: 2



есть матрица. в ней нули и целые числа ( где-нибудь до 100 ).
я её конечно сохраняю, но она потом из этого файла считывается долго.
надо какой-нибудь цивильный алгоритм, чтобы работало порезвее и весило поменьше.
Есть какие - нибудь дельные идеи, хотя бы в теории? 
PM MAIL   Вверх
_hunter
Дата 21.7.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



сщхраняеш первыми двумя числами длину и высоту матрицы.
читаеш их. и потом за раз читаеш длина*высота элементов 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
shupg
Дата 21.7.2006, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 21.6.2006

Репутация: нет
Всего: 2



Я  так и делаю... Может есть алгоритмы по хитрее и по быстрее? smile 
Там много повторений. RAR его сжимает в 50 раз!!!
Сжать бы его раз в 20 - тогда заживем! 
PM MAIL   Вверх
Exception
Дата 21.7.2006, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: нет
Всего: 186



Определись, что тебе более нужно. "Работало побыстрее" и "весило меньше" далеко не всегда могут сочетаться. 
PM   Вверх
Mayk
Дата 21.7.2006, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(shupg @  21.7.2006,  19:28 Найти цитируемый пост)
есть матрица. в ней нули и целые числа ( где-нибудь до 100 ).
я её конечно сохраняю, но она потом из этого файла считывается долго.

От нуля до ста => элемент матрицы можно хранить в 8 битах.
Матрица на диске хранится в int'ах? Если так, то заменить на char.

Кстати, насколько матрица является разряженной?



Цитата(shupg @  21.7.2006,  19:28 Найти цитируемый пост)
Есть какие - нибудь дельные идеи, хотя бы в теории?  

Ну если есть много свободного времени, можно прикрутить что-нибудь наподобие zlibc, чтобы архивировать по ходу чтения/записи.

Можно попробовать считывать не всю матрицу, а лишь необходимые участки.

Что-нибудь типа
Код

class Matrix{
 Row& operator[](int row) const{
      if (isRowLoaded(row)){
           return rows[row];
      }
       loadRowFromDisk(row);
       return rows[row];

}
}

 


PS. winrar сжал 10 метровый файл сгенерированный 
while(chars--){putchar(rand()%100);    }
до 8 метров. 
Зато для сравнения 10 метровый файл сгенерированный так, как будто писались
int'ы от 0 до 99:
while(chars--){putchar(0);putchar(0);putchar(0);putchar(rand()%100);}
как раз ужался в указанные пять раз, поэтому мне кажется что матрица записывается как последовательность int'ов, а не int8_t, и это можно устранить,
сократив тем самым размер файла на три четверти.
  

Это сообщение отредактировал(а) Mayk - 21.7.2006, 22:35


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
shupg
Дата 25.7.2006, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 21.6.2006

Репутация: нет
Всего: 2



спасибо за совет Mayk.
помогло в 15,01628664495114006514657980456 раз! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.