Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Время необходимое для десериализации


Автор: Incinerated 14.12.2010, 15:37
У меня сериализуется состояние класса в определенный момент в одном приложении, и в какой то другой момент времени в другом приложении этот класс десериализуется. Проблема в том, что размер файла в среднем 50-100 Mb получается, и процесс десериализации занимает прилично времени (секунд 10-14 в среднем) , что в принципе не критично, но хотелось бы чтобы был какой то прогресс бар что ли, ну или проценты просто, собственно не важно, чтобы было видно как идет процесс. Возможно ли сделать такое?
Спасибо.

Автор: mes 14.12.2010, 15:45
Цитата(Incinerated @  14.12.2010,  14:37 Найти цитируемый пост)
Возможно ли сделать такое?

возможно 

Автор: Incinerated 14.12.2010, 15:53
Цитата(mes @ 14.12.2010,  14:45)
Цитата(Incinerated @  14.12.2010,  14:37 Найти цитируемый пост)
Возможно ли сделать такое?

возможно

каким образом?

Автор: boostcoder 14.12.2010, 15:57
Цитата(Incinerated @  14.12.2010,  15:37 Найти цитируемый пост)
Возможно ли сделать такое?

покажите код сериализации.

Автор: Incinerated 14.12.2010, 15:57
серилизация:
Код

    System::IO::Stream ^stream;
    stream  = System::IO::File::Open(filename,System::IO::FileMode::Create);
    Formatters::Binary::BinaryFormatter ^f = gcnew Formatters::Binary::BinaryFormatter;
    f->Serialize(stream,drives);

десериализация:
Код

    System::IO::Stream ^stream;
    stream  = System::IO::File::Open(filename,System::IO::FileMode::Open);
    Formatters::Binary::BinaryFormatter ^f = gcnew Formatters::Binary::BinaryFormatter;
    drives = (List<sDrive^>^)f->Deserialize(stream);

если поможет... я не знаю как сюда что то можно прикрутить....

Автор: mes 14.12.2010, 16:01
в общем случае вызывать в цикле (де)сериализации коллбяк со значением  текущего состояния работ.. 
точнее можно сказать только зная детали реализации..

Добавлено через 1 минуту и 7 секунд
опять .Net smile

Автор: boostcoder 14.12.2010, 16:03
Цитата(Incinerated @  14.12.2010,  15:57 Найти цитируемый пост)
серилизация:


Цитата(Incinerated @  14.12.2010,  15:57 Найти цитируемый пост)
десериализация:

вы разделом ошиблись.

Добавлено через 23 секунды
Цитата(mes @  14.12.2010,  16:01 Найти цитируемый пост)
опять .Net

хз что это. но определенно не с++.

Автор: mes 14.12.2010, 16:03
разбить на порции, и сериализовать частями..

Добавлено через 32 секунды
Цитата(boostcoder @  14.12.2010,  15:03 Найти цитируемый пост)
хз что это. но определенно не с++.

c++/cli smile

Автор: boostcoder 14.12.2010, 16:05
Цитата(mes @  14.12.2010,  16:03 Найти цитируемый пост)
c++/cli

c++/cli != с++

Автор: mes 14.12.2010, 16:06
Цитата(boostcoder @  14.12.2010,  15:05 Найти цитируемый пост)
c++/cli != с++ 

c++/qt тоже не равно c++ 
smile
но это оффтопик smile

Автор: boostcoder 14.12.2010, 16:13
Цитата(mes @  14.12.2010,  16:06 Найти цитируемый пост)
c++/qt

qt написано на с++(кстати многие этого не знают). и компилируется любым с++ компилятором.
в таком случае, c++/boost не с++ ?

Автор: mes 14.12.2010, 16:17
Цитата(boostcoder @  14.12.2010,  15:13 Найти цитируемый пост)
 c++/boost не с++ 

c++, у него нет moc, вносящего свой синтаксис.. 
единственное что c++/qt это малый шаг в сторону,
а c++/cli это фактически два сцепленных между собой языка... (только вот проинтегрироваынны между собой плохо)
на c++/cli можно также писать и обычный с++ код, но нельзя его смешивать с managed кодом.. 


Автор: boostcoder 14.12.2010, 16:21
Цитата(mes @  14.12.2010,  16:17 Найти цитируемый пост)
у него нет moc, вносящего свой синтаксис.. 

moc не вносит свой синтаксис. он ищет в исходниках макросы препроцессора, и на основании информации полученной из них, генерирует еще один с++ файл, который необходимо добавить к компиляции.

если же скомпилировать исходник содержащий макросы для moc`а - он скомпилируется, но неслинкуется.

Добавлено через 53 секунды
Цитата(mes @  14.12.2010,  16:17 Найти цитируемый пост)
единственное что c++/qt это малый шаг в сторону

ошибаетесь. это просто метагенератор. и его цель, та же. что и у discolygen.

Добавлено через 2 минуты и 55 секунд
Цитата(mes @  14.12.2010,  16:17 Найти цитируемый пост)
на c++/cli можно также писать и обычный с++ код

а c++/cli есть для линукс? и вообще, для чего он может мне понадобится?


Цитата(mes @  14.12.2010,  16:17 Найти цитируемый пост)
но нельзя его смешивать с managed кодом..

значит не надо оно мне.

Добавлено через 8 минут и 54 секунды
топик: "Форум -> Программирование -> .NET -> .NET для новичков"

ы) перенесли.

Автор: mes 14.12.2010, 16:39
Цитата(boostcoder @  14.12.2010,  15:21 Найти цитируемый пост)
moc не вносит свой синтаксис. он ищет в исходниках макросы препроцессора, и на основании информации полученной из них, генерирует еще один с++ файл, который необходимо добавить к компиляции.

вносит..  просто другой уровень... скажем так, слегка вносит, но изменения ощутимые.. 
и добавляет он еще один .cpp файл или .obj не суть важно.. 

Цитата(boostcoder @  14.12.2010,  15:21 Найти цитируемый пост)
ошибаетесь. это просто метагенератор. и его цель, та же. что и у discolygen.

а кто сказал что дисколи с кодогенератором это с++ ?!
тогда и "с с классами" можно назвать "с " ведь на выходе получился с-код smile

Цитата(boostcoder @  14.12.2010,  15:21 Найти цитируемый пост)
а c++/cli есть для линукс? ?

не знаю, не интересовался.. слыша, что .net портируют под линукс , в рамках проекта mono..

Цитата(boostcoder @  14.12.2010,  15:21 Найти цитируемый пост)
 и вообще, для чего он может мне понадобится?

именно Вам не знаю..  smile
обычный c++, не может "общаться" с managed-кодом, для связки и придуман c++/cli.. 

Цитата(boostcoder @  14.12.2010,  15:21 Найти цитируемый пост)
значит не надо оно мне. 

пока не нужно взаимодействие с .net - не нужен.. 


Автор: boostcoder 14.12.2010, 16:41
Цитата(mes @  14.12.2010,  16:39 Найти цитируемый пост)
вносит

если бы это было так, то такой код бы не компилировался компилятором без предварительной обработки moc`ом.

Автор: mes 14.12.2010, 16:43
Цитата(boostcoder @  14.12.2010,  15:41 Найти цитируемый пост)
если бы это было так, то такой код бы не компилировался компилятором без предварительной обработки moc`ом. 

не правда.. 
разница в результате конечной компиляции..

Добавлено через 1 минуту и 54 секунды
тема то убежала ... и сколько мы тут уже на флудили ) интересно нас не накажут за это ?1  smile 
предупреждений вроде еще не было .. с другой стороны ответ по теме уже дан.. 


Добавлено через 3 минуты и 31 секунду
так тс помойму нам эту тему подарил.. он себе новую завел  smile 

Автор: boostcoder 14.12.2010, 16:49
Цитата(mes @  14.12.2010,  16:43 Найти цитируемый пост)
разница в результате конечной компиляции

компиляция с++ - это генерация объектного файла. так вот, этот самый объектный файл, генерируется правильный.
линковка к ЯП не относится.

Цитата(mes @  14.12.2010,  16:43 Найти цитируемый пост)
тема то убежала ... и сколько мы тут уже на флудили ) интересно нас не накажут за это ?1   
предупреждений вроде еще не было .. с другой стороны ответ по теме уже дан..


та забили на тему, наверное smile 


Добавлено @ 16:50
Цитата(mes @  14.12.2010,  16:43 Найти цитируемый пост)
так тс помойму нам эту тему подарил.. он себе новую завел

великодушный человек, что тут скажешь.

Автор: mes 14.12.2010, 16:52
Цитата(boostcoder @  14.12.2010,  15:49 Найти цитируемый пост)
компиляция с++ - это генерация объектного файла.

 smile ,
a qt-компиляция - это генерация одного основного и возможного одного вспомогательного объектника...

Добавлено @ 16:53
Цитата(boostcoder @  14.12.2010,  15:49 Найти цитируемый пост)
линковка к ЯП не относится.

с точки зрения c++, но бывают и другие взгляды.. 
как впрочем и само понятие линковка зависит от платформы и ее может не быть вообще.. 

Автор: Incinerated 14.12.2010, 17:17
ну вы же не знаете что такое ПМ... что тут поделать... могли бы и тут помочь, разница то собственно, а ответ по теме про цикл, я вообще не понял, как это касается моей ситуации, я же не знаю как реализован класс BinaryFormatter...

Автор: mes 14.12.2010, 17:19
Цитата(Incinerated @  14.12.2010,  16:17 Найти цитируемый пост)
. могли бы и тут помочь, разница то собственно, а ответ по теме про цикл, я вообще не понял, как это касается моей ситуации, я же не знаю как реализован класс BinaryFormatter... 

ответ был чуть ниже.. разбить на порции...
сериализовать не весь список сразу , а частями в цикле..

Добавлено через 40 секунд
Цитата(Incinerated @  14.12.2010,  16:17 Найти цитируемый пост)
ну вы же не знаете что такое ПМ... 

о каком из ПМ идет речь ?

Добавлено через 1 минуту и 51 секунду
а понял, о том что мы не в привате переписываемся.. так там не удобно.. и скучно.. 
smile

Автор: Incinerated 14.12.2010, 17:23
Цитата
ответ был чуть ниже.. разбить на порции...
сериализовать не весь список сразу , а частями в цикле.. 

это будет достаточно проблематично, части равными сделать точно не получиться... и все равно будут большими...

Цитата
о каком из ПМ идет речь ? 

вы могли поспорить с boostcoder в ПМ, а не в моей теме...

Автор: mes 14.12.2010, 17:25
Цитата(Incinerated @  14.12.2010,  16:23 Найти цитируемый пост)
это будет достаточно проблематично, части равными сделать точно не получиться...

а равными не надо.. 

Цитата(Incinerated @  14.12.2010,  16:23 Найти цитируемый пост)
и все равно будут большими...

ну а сколько элементов у Вас в списке ? больше 50 ?

Автор: Incinerated 14.12.2010, 17:28
Цитата(mes @ 14.12.2010,  16:25)
Цитата(Incinerated @  14.12.2010,  16:23 Найти цитируемый пост)
это будет достаточно проблематично, части равными сделать точно не получиться...

а равными не надо.. 

Цитата(Incinerated @  14.12.2010,  16:23 Найти цитируемый пост)
и все равно будут большими...

ну а сколько элементов у Вас в списке ? больше 50 ?

от одного до ну скажем 10... каждый элемент содержит в себе еще списки, которые в свою очередь могут в сумме хранить и 100 000 элементов, отсюда и такой большой размер получается...

Автор: mes 14.12.2010, 17:47
значит менять подход надо smile

Автор: Incinerated 14.12.2010, 17:58
в том то и дело) что не получиться =) задача поиск файлов, на основе кеширования файловой системы =)... хочешь не хочешь, а размер будет большой базы данных...

Автор: mes 14.12.2010, 18:17
Цитата(Incinerated @  14.12.2010,  16:58 Найти цитируемый пост)
.. хочешь не хочешь, а размер будет большой базы данных... 

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)