У нас есть v.large Dictionary<long,uint>
(несколько миллионов записей) как часть высокопроизводительного приложения С#. Когда приложение закрывается, мы сериализуем словарь на диск с помощью 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 секунду.
Кто-нибудь может указать, что мы делаем неправильно, так как мы хотим, чтобы время загрузки было в том же порядке, что и время сохранения.
С уважением, Марк