我使用Xml序列化将约3000个对象的List存储在独立存储中。 反序列化太慢了,我想知道您是否有任何建议来加快速度。
反序列化500个对象的时间是可以容忍的,但反序列化3000个对象需要很长时间。 这只是在模拟器上需要更长的时间吗?在手机上会更快吗?
我做了很多搜索,一些文章说要使用二进制流阅读器,但我找不到它。 无论我是以二进制还是xml格式存储,我只想保留该列表。
我暂时不想考虑异步加载...
我使用Xml序列化将约3000个对象的List存储在独立存储中。 反序列化太慢了,我想知道您是否有任何建议来加快速度。
反序列化500个对象的时间是可以容忍的,但反序列化3000个对象需要很长时间。 这只是在模拟器上需要更长的时间吗?在手机上会更快吗?
我做了很多搜索,一些文章说要使用二进制流阅读器,但我找不到它。 无论我是以二进制还是xml格式存储,我只想保留该列表。
我暂时不想考虑异步加载...
首先,这里已经有一些好的信息,所以+1。
我建议您查看这些文章,让您对使用各种开箱即用的序列化技术可以期望什么性能有一个良好的视角。
Windows Phone 7序列化:比较| eugenedotnet博客
如果您不需要一次性加载和写入所有内容,还可以考虑使用多个文件。
我想重申Jeff的建议,如果您在此之后发现任何实质性的工作,请将其放到后台线程中,以免降低用户交互体验。
这很简单。这是我经常推荐的步骤,人们认为简明而有帮助。
还有最近由Shawn Wildermuth发布的这篇文章,看起来也很不错。
对于这么多的项目,您需要构建自己的优化序列化方案。我看到很多人使用简单的CSV和文本格式来完成这个任务
内置的序列化器并不能够达到足够快的速度。
您真的应该考虑将所有操作都放在后台线程中进行,有很多理由支持这样做,尽管您已经表明不想这样做。
Application_Dectivated()
{
IsolatedStorageFileStream stream = store.OpenFile(fileName, FileMode.OpenOrCreate);
Serialize(stream,(obj)MyHugeList<myObject>);
}
Application_Activated()
{
IsolatedStorageFileStream stream = store.OpenFile(fileName, FileMode.Open);
Deserialize(stream,(obj)MyHugeList<myObject>);
}