C#/WPF学习系列之问题记录——使用不流畅

C#/WPF学习系列之问题记录------使用不流畅

  • 前言
  • 问题
  • 分析
    • 1-分辨率
    • 2-CPU占用
  • 可疑源头
  • 总结

前言

在项目中将WPF架构的软件移植到新采购的设备上,出现接收显示不流畅的问题。在简单的研究后,发现几个问题,仅以此进行简单记录。


问题

  • 在移植程序后,新设备在运行VS2019时,就感觉很卡,加载很慢。
  • 程序移植后,简单运行,加载时间慢于之前的台式电脑,且触摸按键,半天没有反应。

分析

1-分辨率

刚出现问题,同事以屏幕分辨率有问题,暂时先用着。但是后续使用中,更改多种分辨率无用,排除分辨率问题。

2-CPU占用

在调试几次后,打开了任务管理器,发现进程CPU状态在VS2019打开时,会瞬间飙升。在程序运行时,会持续一段CPU高度占用。

  • 检查旧设备与新设备的CPU配置。

    旧设备CPU某6代T,新设备CPU某7代U。

    • i7 六代 T 系列:(通常为四核八线程)、更高主频,适合处理多任务、大型软件和游戏。
    • i7 七代 U 系列: 主打低功耗,采用双核四线程设计,主频较低,适合轻薄本和长续航设备。
  • 代码检查。

    其实想起同事提到的CPU分析,一直没有着重去学习。趁这个机会,简单的探索了一下。通过VS自带的诊断工具,会直接统计出在指定的运行时间内,一些函数占用CPU的资源使用情况。有些函数名直接对应代码中的具体位置,可分析代码进行检查。

可疑源头

通过CPU使用率找到几个占用资源较高的函数。

  • 线程无sleep:

    通过分析发现,在线程内,为了高速接收大量数据,并实时队列取数解析,没有对线程设置sleep,导致资源持续不断的使用,占用情况较高。

    增加sleep,需要注意队列的放数与取数时间要匹配,否则会出现不断放数,取数过少,会累计很多数据。

  • FFmpeg解码问题:

    整个数据解码采用软解,占用cpu很大,而基于C#的WPF的视频硬解码还有待学习!

  • 地图资源加载:

    在地图拖动时,会抢占大量资源,出现卡顿的现象,这方面也需要多查找一下资料学习!

  • 队列使用:

    开辟很多线程,在多个线程中对同一个队列进行存数与取数操作,存与取会抢占资源。当存数与取数都很频繁时,需要考虑一下使用的方式,线程运行一次时考虑一次性取完数据而不是只取一个数据。


总结

通过不同的运行程序,发现程序中开辟很多线程,对线程的配分使用会占用资源。同时,队列的频繁查数也是一种负担。

突然感觉维护的程序很脆,可能转C++处理会好很多。

相关推荐
牛哇网络工作室4 小时前
UnityHDRP写实数字人全流程基础5—语音输入和语音识别
android·unity·c#·游戏引擎·aigc·语音识别·xcode
zlinear数据采集卡15 小时前
数据采集卡从入门到精通(9):分辨率与精度——16位卡不等于1/65536的精度
开发语言·数据库·fpga开发·开源·c#
深澈Vincel17 小时前
我用 C# + WebView2 做了一个针对“流氓软件”的“一键清理工具“:架构实践与踩坑记录
c#
zlinear数据采集卡18 小时前
数据采集卡从入门到精通(7):流水线型ADC——级级接力,高速与高精的平衡术
开发语言·arm开发·嵌入式硬件·fpga开发·c#
kingwebo'sZone20 小时前
C# 根据公式计算的方法
开发语言·c#
阿部多瑞 ABU20 小时前
告别手工核图:基于 .NET + MuPDFCore 的 CAD 等轴测 PDF 材料表提取与新旧版本对比实战
后端·算法·ui·pdf·c#
条形码D20 小时前
DRG综合管理分析系统-目前已经支持CHS-DRG3.0
c#·drg·3.0分组器·drg分组器·chs-drg3.0分组器
Alex Gram2 天前
数据库同步工具PanguSync图文教程
java·mysql·postgresql·sqlserver·c#·数据库同步软件·数据库同步工具
头茬韭菜2 天前
第 10 篇:「Fluss 实战案例集」—— 完整解决方案与最佳实践
c#·linq·fluss
FuckPatience2 天前
WPF 给一个界面上的按钮应用同一种样式
wpf