BinaryFormatter.Deserialize работает медленно :(
От: marx paul Германия Провести онлайн-опрос
Дата: 11.02.10 19:57
Оценка:
Приветствую!

почему BinaryFormatter.Deserialize работает очень медленно?

Сериализация проходит за приемлемое время, а на десериализацию уходит в 20 раз больше времени?
Скажем, 3 милиона элементов Dictionary сериализуются за 2 минуты в файл размером 150 МБ. Десериализуация требует 20ти минут.
Другой словарь в 48 милионов элементов сериализуется за 5 минут в 560 МБ, а десериализовывается больше полутора часов.



вот с чем работаем:

    [Serializable]
    public class Similarities
    {
        // словарик данных на примерно 48 000 000 элементов
        public Dictionary<int, Dictionary<int, double>> Sim = new Dictionary<int, Dictionary<int, double>>();
        
        // простые методы
        public void Add(int userid1, int userid2, double simValue) {// тут все просто}
        public double Get(int userid1, int userid2){// тут все просто}
    }



сериализация (< 5 минут):
                using (FileStream fs = new FileStream(filename, FileMode.Create))
                {
                    BinaryFormatter formatter = new BinaryFormatter();
                    formatter.Serialize(fs, similarities);
                }



десериализация (>90 минут):
                using (FileStream fs = new FileStream(filename, FileMode.Open))
                {
                    BinaryFormatter formatter = new BinaryFormatter();
                    similarities = (Similarities)formatter.Deserialize(fs);
                }







Есть пути борьбы с этими жуткими тормозами? Или пути, ускорить десериализацию?

Заранее огромное спасибо за ответ!


ЗЫ: платформа х64, RAM 8GB (если это на что-то влияет)
Провести онлайн-опрос
Online-Umfrage erstellen
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.