今天在工程中发现了一个非常消耗CPU资源的过程---一个创建Popup并根据绑定的Collection填充ListBox的过程。


通过VS的性能诊断,最终确定的耗时过程锁定在了Popup.isOpen = true这一语句上。

该句导致了Listbox的创建。然而,VS的诊断无法再继续深入了。

这个句子导致用户输入必须等候Popup弹窗完成,造成了十分尴尬的体验。我曾试图通过线程等方式去解决它,效果并不好。

最终的解决方法却有些让我意外。

在主管的帮助下(我实在太拖拉了。。。),我们去看了这个空间的Datatemplate定义,试图通过简化它来提高效率。然而即使简化到只剩一个TextBox,效率仍旧不高。

这个时候,一个无心(或者经验?)的尝试,让我们发现了突破口。我们试图取消不通过绑定,而是使用固定的数据来显示ListBox,并随手替换为TextBlock,耗时直接变为五分之一。

接下来又尝试了几次,结果发现,导致效率差别的其实是TextBox和TextBlock两个控件。

我们选择控件时,应该尽量使用能满足条件的最简单的。

最新文章

  1. NLP点滴——文本相似度
  2. Integer.parseInt 引发的血案
  3. language model —— basic model 语言模型之基础模型
  4. fopen中r+和w+的区别
  5. iOS设置导航栏标题
  6. java 获取classpath下文件多种方式
  7. c++重载运算符注意
  8. 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习
  9. SRF之数据验证
  10. SDWebImage 在多线程下载图片时防止错乱的策略
  11. layout_gravity与gravity的区别
  12. 简单的QT绘图程序(把全部的点都记录下来,然后在paintEvent里使用drawLine函数进行绘制,貌似效率很低。。。)
  13. ubuntu 文件readonly的问题: W10: Warning: Changing a readonly file 解决办法
  14. Pompholyx - Causes, Symptoms and Treatment
  15. char和unsigned char--数据类型区别
  16. js如何获取url参数
  17. 洛谷P2762 太空飞行计划问题
  18. 【杂谈】对IO与NIO的认识
  19. 模块移除 命令rmmod 的实现
  20. go标准库DOC与 raft

热门文章

  1. 【贪心】SOJ 13983
  2. UVA 10791 Minimum Sum LCM(分解质因数)
  3. <一>获取数据库连接
  4. 数据库使用数据泵迁移遇到LOB字段
  5. Log4Net
  6. Struts2 OGNL 字符串自定义转化对象细节
  7. Flink - NetworkEnvironment
  8. 【转】C#中将JSon数据转换成实体类,将实体类转换成Json
  9. EntityFramework 性能优化
  10. try{}、catch(){}、throw语句