У нас есть v.large Dictionary<long,uint>
(несколько миллионов записей) как часть высокопроизводительного приложения на C #. Когда приложение закрывается, мы сериализуем словарь на диск, используя BinaryFormatter
и MemoryStream.ToArray()
. Сериализация возвращается через 30 секунд и создает файл размером около 200 МБ. Когда мы затем попытаемся десериализовать словарь, используя следующий код:
BinaryFormatter bin = new BinaryFormatter();
Stream stream = File.Open("filePathName", FileMode.Open);
Dictionary<long, uint> allPreviousResults =
(Dictionary<long, uint>)bin.Deserialize(stream);
stream.Close();
Возвращение занимает около 15 минут. Мы попробовали альтернативы, и медленная часть определенно составляет bin.Derserialize(stream)
, то есть байты считываются с жесткого диска (высокопроизводительного SSD) менее чем за 1 секунду.
Может кто-нибудь указать, что мы делаем неправильно, так как мы хотим, чтобы время загрузки соответствовало порядку сохранения.
С уважением,
Marc