zoukankan      html  css  js  c++  java
  • 关于WPF程序启动性能

    项目里WPF的启动时间太久(>1分钟),显然是不能接受的。超过10秒,连Loading的等待框都会让用户感到厌烦。

    1. 症状

    项目的结构是1个WPF主进程,启动3个WPF子进程。子进程在启动时会卡顿3-10秒不等,能在进程管理器里看这个进程,但只有1个线程、没有CPU波动、35个Handle创建、244K内存。然后就停住不动了,甚至我在Main()的头一句打的Log都没Print出来。

    一开机启动会卡,连续启动10+次也会卡,说明不是Cold Start类的问题,否则只有第一次启动会卡。

    反复启动10+次,偶尔不卡,多数会卡顿。似乎也不是标准的Warm Start类的问题。

    2. 若干尝试:

    主要参考这篇《Improving WPF applications startup time》

    1. 给用到XmlSerializer的库加PostEvent

      "C:Program Files (x86)Microsoft SDKsWindowsv8.1AinNETFX 4.5.1 Toolssgen.exe" /f $(TargetFileName)

    2. 去掉代码的CA验证
      app.config里添加以下配置:

    <runtime>
        <generatePublisherEvidence enabled="false"/>
    </runtime>
    
    1. 用ngen
      ngen install [AssemblyName] // 会级联生成所有依赖的Native Image

    试下来的结果是:都没用。先挖个坑在这里,等以后解决了来填吧。

  • 相关阅读:
    Pandas获取本地csv文件到内存中
    波士顿房价数据集可视化
    tensorflow之数据集调用(波士顿房价数据集)
    查单词
    censoring
    字符串大师
    Parity game
    前缀和
    String
    Seek the Name, Seek the Fame
  • 原文地址:https://www.cnblogs.com/AlexanderYao/p/5726463.html
Copyright © 2011-2022 走看看