[转]性能分析笔记

本文深入探讨了应用程序性能优化的关键指标,包括崩溃率、假死率、白屏率等,并提供了详细的故障排查方法,如死锁问题的线程等待链检查,泄漏问题的资源排查技巧。同时,介绍了多种性能分析工具,如WinDbg、XPerf和VisualStudioDiagnosticTool,以及性能优化策略,如预取、局部访问优化和驱动加速。

转至:BOTManJL

指标

  • 崩溃率:崩溃机器数/启动机器数,崩溃次数/启动次数

  • 假死率/卡顿率:超过 10s/2s 不响应心跳消息(机器数,次数)

  • 白屏率:页面区域持续 10s 白屏(机器数,次数)

  • 主界面/首页 加载完成时间/CPU 时间

    • Log -> 旭日图
    • Trace -> 火焰图
  • 主界面/首页 首屏绘制完成时间:用户感知加载总时间

  • 用户触发启动 到 首次绘制完成时间:用户感知打开总时间

  • 死锁问题:

    • 检查线程等待链,查看是否成环
    • 可能导致 假死/卡顿
  • 泄漏问题:

    • 内存泄露(!heap/UMDH/LeakDiag)/ 句柄泄露(!htrace
    • 通过 diff snapshot 排查,哪类资源 泄露 -> 何时/何地 泄露
  • 排查问题:

    • 收集 Dump/Trace
    • 下发云控
    • 远程调试

维度

  • 横向比较(竞品)+ 纵向比较(版本)

  • 冷热启动:

    • 由于物理内存会有 Standby List 缓存,File I/O != Disk I/O
    • 模拟冷启动:需要使用 RAMMap 清空 Standby List
  • 启动时间:启动量以周为周期变化,节假日启动少

  • 启动方式:主动打开,默认打开方式,第三方调起

  • 实验环境:实验室环境/用户机器环境

  • 操作系统:版本/32-64位

  • 硬件环境:CPU 个数/内存大小/是否 SSD

  • 共存环境:安全软件影响

  • 网吧环境:网管软件影响

  • 网络环境:运营商劫持影响

  • 打开 URL:根据 host 聚合

工具

  • WinDbg:查看崩溃 Dump + 调试
  • XPerf:查看细化的 Trace(基于 ETW 更底层)
  • Visual Studio Diagnostic Tool:粗略分析 CPU/内存(最上层)
  • Process Explorer:查看进程关系
  • Process Monitor:查看进程活动情况(偏底层)
  • RAMMap/VMMap:查看 系统/进程 内存分布

策略

  • 启动快

    • 核心思想:

      • 能去掉就去掉
      • 能优化就优化
      • 都不能就预取
    • 原生绘制:提升体验/收入(漏斗:提前关闭/流量劫持/加载错误)

    • 延迟加载:优先完成首次绘制,其他功能往后放

    • 代码预取:避免内存映射文件 分散/少量 读取导致频繁 Page Fault(尤其是冷启动工作集从无到有)

    • 局部访问:vector 相对于 list,一次性分配内存,访问时内存也更连续

    • 指令重排:把启动时需要的 指令/数据 放在一起

      • Profile Guided Optimization (PGO)
      • 可能破坏局部性原则,Page Fault 导致小工作集抖动
      • 驱动加速:通过驱动加载资源并锁定在内存中,避免启动时再次加载
    • 智能预判:基于 AI 判断是否需要提前启动、打开网页

  • 占用少

    • 进程合并:多进程架构合并为多线程架构,需要架构上的支持
    • 内存清理:空闲时 trim 工作集,回收物理内存
    • 智能休眠:基于 AI 判断是否需要关闭/回收页面内存

演进

by zifeng T3.3

  • 工具时代:用户反馈 -> 远程联系 -> 手动定位
  • 系统时代:自动监控 -> 后台系统 -> 自动分析
  • AI 时代:采集数据 -> 训练模型 -> 行为预判
基于51单片机,实现对直流电机的调速、测速以及正反控制。项目包含完整的仿真文件、源程序、原理图和PCB设计文件,适合学习和实践51单片机在电机控制方面的应用。 功能特点 调速控制:通过按键调整PWM占空比,实现电机的速度调节。 测速功能:采用霍尔传感器非接触式测速,实时显示电机速。 正反控制:通过按键切换电机的正和反状态。 LCD显示:使用LCD1602液晶显示屏,显示当前的速和PWM占空比。 硬件组成 主控制器:STC89C51/52单片机(与AT89S51/52、AT89C51/52通用)。 测速传感器:霍尔传感器,用于非接触式测速。 显示模块:LCD1602液晶显示屏,显示速和占空比。 电机驱动:采用双H桥电路,控制电机的正反和调速。 软件设计 编程语言:C语言。 开发环境:Keil uVision。 仿真工具:Proteus。 使用说明 液晶屏显示: 第一行显示电机速(单位:/分)。 第二行显示PWM占空比(0~100%)。 按键功能: 1键:加速键,短按占空比加1,长按连续加。 2键:减速键,短按占空比减1,长按连续减。 3键:反切换键,按下后电机反。 4键:正切换键,按下后电机正。 5键:开始暂停键,按一下开始,再按一下暂停。 注意事项 磁铁和霍尔元件的距离应保持在2mm左右,过近可能会在电机动时碰到霍尔元件,过远则可能导致霍尔元件无法检测到磁铁。 资源文件 仿真文件:Proteus仿真文件,用于模拟电机控制系统的运行。 源程序:Keil uVision项目文件,包含完整的C语言源代码。 原理图:电路设计原理图,详细展示了各模块的连接方式。 PCB设计:PCB布局文件,可用于实际电路板的制作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值