Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
85 / 77 / 13
Регистрация: 03.09.2009
Сообщений: 346

Сериализация в MemoryStream

09.05.2010, 22:52. Показов 4830. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, возникло такое затруднение: Сериализую в память некий объект объемом 5-10 мб. Правда этот объект состоит из нескольких 2-х мерных массивов объектов помельче. Но все равно вроде как объем не такой уж фантастический. Проблема в том, что сериализация занимает неприемлемо долгое время - от 1 до 3 сек.
Может есть способ сериализации побыстрее? (Я использую сериализацию для UNDO)
Я использую такой код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 public static MemoryStream SavePRJToMem(Project PRJ)
        {
            MemoryStream stream = new MemoryStream();
            try
            {
                IFormatter formatter = new BinaryFormatter();
                formatter.Serialize(stream, PRJ);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 
            return stream;
 
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.05.2010, 22:52
Ответы с готовыми решениями:

Сериализация MemoryStream-a
Как с помощью XmlSerializer сериализовать класс, у которого есть свойство типа MemoryStream? BinaryFormatter в моем случае не подходит (это...

Сериализация, десериализация и MemoryStream
Утрированная задача, пытаюсь разобраться в принципе работы... хочу запихнуть объект в поток, преобразовать в строку, потом получить...

JPEG->MemoryStream = 120тиков а JPEG->Image1 и Image1->MemoryStream = 30тиков?
Добрый вечер. Впринципе название темы все объясняет. Ради любопытства думал что может по умолчанию размер JPEGa не задан и он кроме рисунка...

5
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
10.05.2010, 00:28
1. зачем так издеваться над несчастным форматтером? (да и над собой тоже...)
2. а асинхронные вызовы не подойдут?

Не по теме:

3. попробуй за 1-3 секунды 5-10 миллардов раз сказать букву А

0
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
10.05.2010, 02:43
ручную сериализацию никто не отменял, как показывает практика она бывает в 10-50 раз быстрей
0
85 / 77 / 13
Регистрация: 03.09.2009
Сообщений: 346
10.05.2010, 22:49  [ТС]
Цитата Сообщение от Mikant Посмотреть сообщение
1. зачем так издеваться над несчастным форматтером? (да и над собой тоже...)
2. а асинхронные вызовы не подойдут?

Не по теме:

3. попробуй за 1-3 секунды 5-10 миллардов раз сказать букву А

1. В каком смысле издеваться?
2. Насколько я понимаю нет смысла, т.к. все равно придется ждать конца сериализации. Ведь в это время нельзя будет изменять объект, который сериализуется?
3. Не миллиардов, а всего лишь миллионов. Для этого и есть компьютеры ))

Цитата Сообщение от m0nax Посмотреть сообщение
ручную сериализацию никто не отменял, как показывает практика она бывает в 10-50 раз быстрей
да, пришлось делать все вручную. Действительно быстрей раз в 10. Просто с каждым изменением класса-проекта придется дорабатывать и сериализатор.
0
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
11.05.2010, 00:06
1. BinaryFormatter, ровно как и XmlSerializer хорош только для малых объемов данных, да и то, только когда нет простых альтернатив (если лень ко сну клонит)
2. да, естественно, нельзя. но не ВСЕ же 10 мегов нельзя...
3. погорячился ^_^

4. странный какой-то проект, где при каждом изменении класса приходится переделывать форматтер...

имхо, конечно надо делать всю сериализацию/десереализацию пользовательских (больших) объемов данных только вручную, но делать по уму, не сохраняя всякий ненужный хлам. контейнеров в мире существуют тысячи - надо брать примеры с них

зы. я с удовольствием помогу, если задача будет описана чуть подробнее
0
85 / 77 / 13
Регистрация: 03.09.2009
Сообщений: 346
11.05.2010, 00:40  [ТС]
Ну да, сам класс-проект в разработке, поэтому некоторые поля добавляются, некоторые убираются или изменяются. Поэтому и решил с начала использовать стандартный сериализатор, чтоб ему было без разницы какой объект сериализировать. Если б знал, что он такой тормозной...

В классе основной объем это словарь, который содержит штук 5-10 2-х мерных массивов. Массивы состоят из объектов, т.е. из ссылок на объекты.
Сделал вручную копирование этого словаря в дубликат. Работает намного быстрее. Можно будет потом сделать, чтобы копировался не весь словарь а только тот массив, который изменился. Но это надо будет еще знать какой из них изменился... В общем пока и так неплохо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.05.2010, 00:40
Помогаю со студенческими работами здесь

Windows Forms и сериализация. Сериализация контрола
Привет всем. Для того что бы набраться опыта делаю игрушку-лабиринт. В есть старт и финиш. Нужно вести мышкой и не попадать на стены. Игру...

MemoryStream
Можете обьяснить КАК ДЛЯ ИНДУСА в чём его фича? Прочитал в книжке, так и не понял чем эта штука настолько крута... Заинтересовало только...

запись в MemoryStream
как записать подобное значение в MemoryStream ? N LockBox3 Ђ ...

RichTextBox MemoryStream
салют всем, доброго вам денечка и отличного настроения.. есть такая функция, скачанная на просторах интернета, смысл которой я не...

INI и MemoryStream
Приветствую. Хочу данные в MemoryStream обрабатывать при помощи tinifile. Но он вроде не имеет методов работы с мемористрим. Есть ли что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru