Mar*_*ark 5 c# silverlight performance windows-phone-7
我有一个约有的.JSON文件.1.5MB大小包含大约1500个JSON对象,我想在我的应用程序启动时将其转换为域对象.
目前我在手机上的过程(不在我的开发PC上)需要大约23秒,这对我来说太慢了,并且迫使我写入对象列表,ApplicationSettings
这样我每次加载应用程序时都不必这样做(只是首先关闭),但即使这需要15多秒写入,16秒读取,所有这些都不够好.
我没有很多序列化经验,我真的不知道完成它的最快方法.
目前,我正在使用System.Runtime.Serialization
命名空间DataContract
和DataMember
方法.
有关此类数据加载的任何关于性能的想法?
我发现Json.NET库比标准 json 序列化器性能更高,并且有更好的选项。
我在应用程序中遇到的一个性能问题是,我的域对象使用代码实现了 INotifyPropertyChanged,以支持将事件分派回 UI 线程。由于反序列化代码填充了这些属性,我做了很多不需要的线程编组。在反序列化期间删除通知大大提高了性能。
更新:我使用的是 Caliburn Micro,它在 PropertyChangedBase 上有一个属性,可以关闭属性更改通知。然后我添加了以下内容:
[OnDeserializing]
public void OnDeserializing(StreamingContext context)
{
IsNotifying = false;
}
[OnDeserialized]
public void OnDeserialized(StreamingContext context)
{
IsNotifying = true;
}
Run Code Online (Sandbox Code Playgroud)