msprofiler前置知识:如何看懂tracing profile文件?

简介: Tracing是一种技术,用于收集程序执行过程中的事件,如函数调用、I/O操作等,特别适用于Web开发中的性能分析。Wall Duration指操作从开始到结束的实际时间,反映用户感知的性能。Self Time则专注于函数自身执行的时间,不包括调用其他函数的时间,有助于定位性能瓶颈。通过这些工具,开发者可以优化代码、减少延迟、管理资源,提升应用性能。

1 什么是tracing?

Tracing 是一种收集程序执行过程中事件的技术。它记录了程序运行时发生的事件,如函数调用、I/O操作、系统调用等。在Web开发中,Tracing 通常用于收集浏览器渲染页面时的性能数据,包括CPU活动、内存使用情况、网络请求等。

  • 用途:通过Tracing,开发者可以获得详细的性能指标,识别瓶颈所在,进而优化代码。
  • 工具:在Edge DevTools中,Performance面板提供了Tracing的功能,可以用来记录页面加载、交互等过程中的性能数据。
    打开Edge浏览器,在地址栏输入 edge://tracing,出来的界面如下。Chrome或者其它浏览器亦可,比如:
    chrome://tracing。
    image.png

点击Load,可以导入profiler生成的JSON文件。
操作:
按键盘w, a, s, d键,可以对profiler的结果进行缩放和移动。

鼠标托选其中一栏后,会显示出如下:
image.png

2 Wall Duration(壁钟持续时间)

Wall Duration(有时也称为wall clock time或elapsed time)指的是一个操作从开始到结束所经历的实际时间。这是指从用户的视角来看,完成某项任务所需要的时间,包括了等待时间、CPU时间以及其他任何影响最终完成时间的因素。

- 测量:Wall Duration是用户感知性能的重要指标,因为它反映了用户实际等待的时间。
- 影响因素:除了CPU执行时间外,还包括I/O等待、进程调度延迟等。

3 Self Time(自身时间)

Self Time 是指某个特定函数或方法在其内部执行所花费的时间,不包括其子函数或调用其他函数的时间。换句话说,Self Time 反映了直接在这个函数内部执行的操作所花费的时间。

  • 用途:Self Time 帮助开发者理解哪个函数本身是最耗时的,这对于定位性能瓶颈很有帮助。
  • 区分:与Total Time(或Cumulative Time,累计时间)不同,Total Time包括了函数及其所有子调用的时间。

    4 示例解释

    假设你在Edge DevTools中使用Performance面板进行了一次Tracing,你可能会看到类似下面的数据:

  • Tracing:记录了页面加载过程中的所有事件,包括网络请求、JavaScript执行、布局重绘等。

  • Wall Duration:显示了页面从开始加载到完全加载完成所花费的实际时间。
  • Self Time:对于每一个函数调用,展示的是该函数自身执行所花费的时间,而不包括它调用的其他函数的执行时间。
    通过这些信息,你可以更好地理解你的应用在运行时的行为,发现潜在的性能问题,并据此进行优化。

5 如何使用这些信息

当你在Edge DevTools中查看性能报告时,可以利用这些信息来:

  • 优化代码:通过查看Self Time较高的函数,可以找到需要优化的部分。
  • 减少延迟:通过关注Wall Duration,可以尝试减少页面加载时间,提升用户体验。
  • 资源管理:通过Tracing数据,可以发现哪些资源请求是不必要的,从而减少网络请求,优化资源加载流程。
    总的来说,Tracing、Wall Duration 和 Self Time 都是帮助开发者理解和改进应用程序性能的关键概念。通过这些工具和技术,开发者能够更深入地了解程序的执行情况,并据此做出优化决策。
相关文章
|
XML JSON jenkins
Python代码覆盖率分析工具----Coverage
Python代码覆盖率分析工具----Coverage
1183 0
|
9月前
|
存储 缓存 NoSQL
即将开源 | 阿里云Tair KVCache Manager:企业级全局 KVCache 管理服务的架构设计与实现
【重磅】阿里云 Tair KVCache 团队联合阿里巴巴智能引擎、基础设施与稳定性工程团队即将开源企业级全局 KVCache 管理服务 Tair KVCache Manager,本文详细介绍该服务的架构设计与实现细节。 随着 Agentic AI兴起,以推理引擎为中心的传统单机分层方案已无法满足新时代的 KVCache 存储需求。随着 KVCache 池化存储在大规模 Agent 推理场景中走向落地,需要构建具备容量精准评估、动态弹性伸缩、多租户隔离、高可用保障及版本协同管理能力的企业级 KVCache 管理系统,以支撑PB级存储下的成本效益优化与服务可靠性需求。为了解决这些问题,我们设计
|
10月前
|
JavaScript
1.2 NodeJS安装
本节介绍Node.js的安装方法,可通过官网或本地安装包进行。安装时需选择无空格的英文路径,并参考手册完成。安装后通过“win+R→cmd→node -v”命令验证环境,能输出版本号即成功,版本无需与示例一致。
|
监控 NoSQL 数据可视化
Django+Celery 进阶:Flower可视化监控与排错
本文介绍了Celery命令行工具与图形监控工具的使用,涵盖查看Worker状态、任务信息及集成至Django项目的方法,同时提供Redis监控与常见问题排错方案。
1164 1
|
机器学习/深度学习 vr&ar 异构计算
diffusers
【9月更文挑战第22天】
1374 75
|
传感器 测试技术 开发工具
通义灵码添加上下文能力怎么用?一篇看懂
Qwen3系列混合推理模型已全面开源,其中Qwen3-235B-A22B在多项测试中表现卓越。通义灵码现已支持Qwen3,并上线编程智能体,具备自主决策与工具使用能力,可完成编码任务。开发者可通过多种方式添加上下文(如代码文件、图片、Git提交等),增强交互效果。体验地址:https://lingma.aliyun.com/download。
1413 35
|
数据采集 监控 Go
用 Go 实现一个轻量级并发任务调度器(支持限速)
本文介绍了如何用 Go 实现一个轻量级的并发任务调度器,解决日常开发中批量任务处理的需求。调度器支持最大并发数控制、速率限制、失败重试及结果收集等功能。通过示例代码展示了其使用方法,并分析了核心组件设计,包括任务(Task)和调度器(Scheduler)。该工具适用于网络爬虫、批量请求等场景。文章最后总结了 Go 并发模型的优势,并提出了扩展功能的方向,如失败回调、超时控制等,欢迎读者交流改进。
663 25
|
并行计算 PyTorch 算法框架/工具
OpenFold2.0 基于NPU的推理适配与测试
本教程详细介绍了 OpenFold 的环境搭建、代码部署、依赖安装、数据集准备及推理测试全流程。首先通过 Anaconda 创建 Python3.9 环境并配置相关库,接着克隆 OpenFold 代码仓库并安装必要依赖(如 PyTorch、dllogger、hhsuite 等)。随后准备 PDB 数据集与模型参数,调整脚本路径以适配运行环境。最后执行推理脚本完成测试,并针对常见报错提供了解决方案,例如更新 NumPy、SciPy 或调整 GPU 配置等,确保流程顺利运行。
|
缓存 监控 安全
告别缓存击穿!Go 语言中的防并发神器:singleflight 包深度解析
在高并发场景中,多个请求同时访问同一资源易导致缓存击穿、数据库压力过大。Go 语言提供的 `singleflight` 包可将相同 key 的请求合并,仅执行一次实际操作,其余请求共享结果,有效降低系统负载。本文详解其原理、实现及典型应用场景,并附示例代码,助你掌握高并发优化技巧。
897 0