![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| shupg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 21.6.2006 Репутация: нет Всего: 2 |
есть матрица. в ней нули и целые числа ( где-нибудь до 100 ).
я её конечно сохраняю, но она потом из этого файла считывается долго. надо какой-нибудь цивильный алгоритм, чтобы работало порезвее и весило поменьше. Есть какие - нибудь дельные идеи, хотя бы в теории? |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
сщхраняеш первыми двумя числами длину и высоту матрицы.
читаеш их. и потом за раз читаеш длина*высота элементов -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| shupg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 21.6.2006 Репутация: нет Всего: 2 |
Я так и делаю... Может есть алгоритмы по хитрее и по быстрее?
Там много повторений. RAR его сжимает в 50 раз!!! Сжать бы его раз в 20 - тогда заживем! |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: нет Всего: 186 |
Определись, что тебе более нужно. "Работало побыстрее" и "весило меньше" далеко не всегда могут сочетаться.
|
|||
|
||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
От нуля до ста => элемент матрицы можно хранить в 8 битах. Матрица на диске хранится в int'ах? Если так, то заменить на char. Кстати, насколько матрица является разряженной? Ну если есть много свободного времени, можно прикрутить что-нибудь наподобие zlibc, чтобы архивировать по ходу чтения/записи. Можно попробовать считывать не всю матрицу, а лишь необходимые участки. Что-нибудь типа
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 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
| shupg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 21.6.2006 Репутация: нет Всего: 2 |
спасибо за совет Mayk.
помогло в 15,01628664495114006514657980456 раз! |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |