|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.06.2016, 18:20 | #1 |
Регистрация: 26.11.2015
Сообщений: 5
|
Магические числа GZipStream C#
Здравствуйте, Проблема в следующем. Я пишу архиватор, который выполняет работу в многопоточном режиме по типу конвейера. Я считываю блок сразу передаю на конвертацию и потом на запись в файл, проблема в том, что так как конвертирование идет блоками, то в каждом блоке GZIPSTREAM записывает свои магические числа, как результат-лишняя информация в архиве и невозможность распаковки, так как для корректной распаковки придется делить на блоки по этим магичесикм числам, что требует затрат лишнего времени. Помогите идеей, как можно организовать так, чтобы эти числе не записывались в каждый блок, или как быстро разделить на эти блоки при распаковке.
|
07.06.2016, 18:41 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
делите все в OutputStream что передаете ему.(точнее что ему GZipStream отдаст)
(да придется свой враппер написать) итого у вас выйдет одна сессия сжатия на входной поток, а не на блок. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
07.06.2016, 18:49 | #3 |
Регистрация: 26.11.2015
Сообщений: 5
|
А это намного больше времени должно занять?
|
07.06.2016, 18:52 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
быстрее чем ваш текущий метод.
только не разбивайте входящие данные на блоки, архиваторы это не любят(понижение скорости, понижение степени сжатия), это не хеширование. оперируйте только выходными. соотственно вам нужны будут все выходные блоки в том же порядке, это решается своим входным потоком. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
07.06.2016, 18:54 | #5 |
Регистрация: 26.11.2015
Сообщений: 5
|
Тогда в чем будет суть моей многопоточности, если я должна сразу все блоки передавать?
|
07.06.2016, 18:57 | #6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
если вам нужно строго дробить входные данные, то иного метода кроме вашего нет.
оверхед будет. многопоточность еще можно обеспечить вширь, а именно при архивировании нескольких файлов. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
07.06.2016, 20:18 | #7 |
Регистрация: 26.11.2015
Сообщений: 5
|
Да, вот и получается замкнутый круг( к сожалению многопоточность нужно обеспечить для одного файла
|
07.06.2016, 20:20 | #8 |
Регистрация: 26.11.2015
Сообщений: 5
|
А можно при предложенном вами методом работать с файлами, размер которых больше оперативки?
|
07.06.2016, 21:59 | #9 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
это можно делать в любом методе.
GZipStream не заставляет считывать все за один раз. он отлично примет и несколько Write и CopyTo даже. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создать программу,имеющая процедуру,кторая в производном текстовом файле,которая имеет слова и числа,изменяющая все числа числа,ме | Fingergod | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 13.12.2012 20:08 |
Задачи в ТурбоПаскаль: найти числа Армстронга и просуммировать числа в последовательности номера которых простые числа | Lena1808 | Помощь студентам | 1 | 17.05.2012 08:00 |
Простой код и магические ошибки? | tq404 | Помощь студентам | 2 | 17.01.2012 04:48 |
Магические действа | Rabbit-PGN | C/C++ Сетевое программирование | 0 | 30.11.2011 21:00 |
Магические кавычки (magic quotes) | Linel | PHP | 5 | 12.02.2010 14:21 |