我在文件中有大约30 000个二进制序列化对象, 我正在使用一个简单的foreach循环这个基本代码来做到这一点:
FileStream fileStream = new FileStream(pathToFile, FileMode.Create);
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize((Stream) fileStream, objectToSerialize);
fileStream.Close();
我可以使用多线程或其他方式加速进程吗? (记忆流等)
答案 0 :(得分:3)
重复使用binaryFormatter,而不是每次都重新创建它。在FileStream和格式化程序之间使用BufferedStream也可以提高性能。 顺便说一句:使用“使用”来确保您的文件流已关闭,即使在序列化时引发异常时也是如此。
答案 1 :(得分:1)
您将“挤出”一些涉及IO的改进性能的唯一方法是确保您在进行CPU处理时不等待IO。但是,您无法并行写入磁盘。它一次只能做一个操作。
所以你可以做的两件大事是: