Приветствую!
почему 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 (если это на что-то влияет)