日期:2014-05-20  浏览次数:21454 次

C#反序列化Deserialize慢求解决方法
基本代码

  fileStream = new FileStream(fileName, FileMode.Open);
  BinaryFormatter binaryFormatter = new BinaryFormatter();
  IPcrDataFile aa =(IPcrDataFile) binaryFormatter.Deserialize(fileStream);
  fileStream.Close();   
  return aa;

这段代码反序列化一个文件大概要300ms而我一次要读取的文件有200到300个,所以每次扫描读取文件就要一两分钟,严重不合领导要求。 要

求最慢在15S以内要读完,求解决方案

------解决方案--------------------
慢不慢看你数据的量了,代码就是这几行,除非你自己去实现持久化
------解决方案--------------------
BinaryFormatter 没办法再提升性能了。

你可以考虑从设计角度上让程序更“快”些,比如用到时再加载(lazy load)。

或者一次读取尽可能少的文件。还有利用多线程(如果机器是多核的,才效果明显)读取
------解决方案--------------------
明显是设计问题,把xml当数据库用妄图提高性能。

很多初学者作的C/S的程序都是一次性读取所有数据绑定到控件,人家都没有慢得15s都搞不定。
------解决方案--------------------
“元芳,你怎么看!”元芳:“这里面一定隐藏这一个天大的秘密。”“我靠,果然有个天大的MM”。
===========================================================================================

sorry,我想不出来,发个笑话,给你解解压。。
------解决方案--------------------
给他一个进度条,慢慢反序列化
------解决方案--------------------
你如果没有什么需要隐藏的数据就直接 XML 结构序列化下看看。