WPF性能优化

一、性能优化过程中,内存和耗时情况的计算方式:

  内存使用情况的获取,使用GC.GetTotalMemory(true);

  耗时使用情况的获取,使用Stopwatch计算;

二、优化途径

  1.  控件虚拟化属性,抽象类VirtualizingPanel,例如某些现有的属性VirtualizingStackPanel.IsVirtualizing="True";

  2. 数据结构的选型,List和Dictionary,大数据量情况下,Dictionary通过key查找很快,TryGetValue比先判断Contains再取值快一倍。List.BinarySearch()性能比List.IndexOf()要高很多。

  3. 算法优化,比如说公式解析中, 求五日均线,for循环内嵌小循环,O(n^2);通过对业务的熟悉,优化为O(n), 5日数据总合减去队列第一个值,队列再加一个值,计算总数合平均值。

  4. Cache,对于常用数据进行预加载,后期使用直接内存中取已经加载和处理好的数据;这里需要注意数据的更新和通知。

  5. 对象池。

  6. Lazy<T> 初始化的时候不会执行构造,调用属性值的时候会初始化执行构造函数; 还有属性懒加载,public A AA{ get{ if(aa==null) aa=new A(); return aa;}}。

  7. 异步加载,在程序运行时候,后台可以同时异步加载数据或者更新数据,加载完毕之后对数据进行处理,最后通知前端更新。

  8.少用反射,不是说不用。在批量处理过程中尽量不要用反射;

  9. IPropertyChanged接口实现里面,尽量不要用Lambda表达式;

 

WPF性能优化

上一篇:项目实战:C#上位机+arduino下位机+控制点亮LED灯


下一篇:vue window.open无法打开新窗口