前端性能分析工具及使用

news2024/11/25 9:59:25

  Lighthouse

  Lighthouse (谷歌浏览器的插件商店中搜索并安装,浏览器中点击F12,开发者工具中可使用)是 Google 开发的一款工具,用于分析网络应用和网页,收集现代性能指标并提供对开发人员最佳实践的意见。只要能够使用谷歌就可以使用Lighthouse。

  性能:就是对上述指标进行测试

  可访问性(Accessibility)

  Accessibility 辅助功能 : 无障碍设计,也称为网站可达性。是要让所创建的网站对所有用户都可用/可访问,不管用户的生理/身体能力如何、不管用户是以何种方式访问网站。考虑残障用户(视力障碍)

  最佳实践(Best Practices)

   最佳实践 : 实践性检测,如网页安全性,如是否开启 HTTPS、网页存在的漏洞等

  SEO 搜索优化

  SEO(Search Engine Optimization):搜索引擎优化检测,如网页 title 是否符合搜索引擎的优化标准等。

  搜索引擎优化 (SEO) 通常是指对网站的部分内容进行细微的修改。单独来看,这些修改可能只是细微的改进,但与其他优化结合后,则可能会对您网站的用户体验以及在搜索结果中的表现产生显著影响。

  Chrome(Performance)

  谷歌浏览器调试工具栏中自带的工具

  实验

  本次实验在一个开源的项目下进行的性能测试实验演示,地址为https://github.com/pobusama/chrome-preformance-use-demo,其中运行的是demo2,界面如下:

  为了能够更好的演示实验,该项目设置了随机添加蓝色方块,重复点击add按钮,模拟用户的不断且重复操作,可以看到蓝色的方块会流动的越来越卡,当点击Optimize按钮就会流畅一些,因为做了一些优化操作(具体见代码,此处只是演示效果,分析性能)。

录制

多次点击Add按钮,直至页面出现卡顿,然后点击录制按钮,录制一段时间;

接着点击Optimize按钮,形成优化后的效果,录制一段时间,然后点击“停止”,等待生成性能报告

生成性能报告

图中:1是概览面板

2和3是线程面板

左侧是优化前的性能评估数据,右侧是优化后的性能评估数据

在概览面板中,最上边的数据代表FPS数据 ,FPS数值越高,画面越丝滑。(fps是帧率)

1区域出现了大量的红色色块,这代表在这段运行时间中,画面掉帧明显,颜色越红越严重,而右侧区域没有红色色块证明没有掉帧现象。

1区域中的下半部分,是CPU的使用率和使用方式。黄色(执行js),紫色(渲染),绿色(绘制到页面)以及其他颜色。

数字3所在区域,为浏览器各个进程的具体活动,这里关注主线程(Main)即可

查看某段时间具体的评估数据

点击概览模块的某块时间。(优化前)

通过鼠标滚轮或者点击或拖拽概览面板的方式查看特定的时间段,为了查看优化前是哪里的性能出现了问题,我把查看概览面板缩小成只能看到执行了3个任务的大小。

单个任务从上往下为调用关系,Anemotion Frame Fired (动画帧已触发)调用了Function Call (函数调用), 而Function Call 调用了app.update

继续缩小查看范围,直到我们只看到一个任务执行。

在面板中我们可以点击某一个色块查看详情,跟随调用栈的足迹,我们找到即​​app.update​​色块,查看图中蓝色区域的详情,这里显示执行自身Js花费了19ms,接下来对Js调用的rendering花费了152ms,从图中可以看到在​​app.update​​色块有无数的紫色小方块,而等待这些紫色小方块的执行延长了整个Js的执行时间。

调整查看范围,直到看到优化后的具体几个任务。(优化后

看到优化后的面板app.update色块所有的紫色小方块都消失了,而紫色小方块是跟布局有关的活动,看到这里我们可以锁定优化前的js代码中存在改变布局的操作,需要进入代码层面。

点击进入代码查看

可以看到,每个函数的耗时也都显示在左侧,右侧有源码地址,点击就可以跳到 Sources 对应的代码。然后对代码进行优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1617644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

node.js版本降级/升级

第一步.先清空本地安装的node.js版本 按健winR弹出窗口,键盘输入cmd,然后敲回车(或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出,输入cmd再点击回车键) 进入命令控制行窗口,输入where node,查看本地…

关于YOLO模型架构中的strides

在Ultralytics YOLO模型架构中,m.stride是一个非常关键的属性,用于描述网络在不同尺度(scale)上的空间压缩程度。解释m.stride的原理之前,我们首先要了解深度学习中卷积神经网络(CNN)的基本工作…

png图片如何缩小体积?这个方法效果不错

图片压缩是我们生活中经常都会遇到的问题。在日常工作中图片体积过大的话,在使用过程中就会收到影响,比如加载过慢等。那么,当我们想要对png图片进行压缩处理的时候,要怎么操作呢?很简单,使用图片在线压缩&…

【sping】在logback-spring.xml 获取项目名称

在日志文件中我们想根据spring.application.name 创建出的文件夹。 也不想死在XML文件中。 application.yml spring:application:name: my-demo logback-spring.xml <springProperty name"application_name" scope"context" source"spring.app…

如何用微信小程序实现远程控制无人售货柜

如何用微信小程序实现远程控制无人售货柜呢&#xff1f; 本文描述了使用微信小程序调用HTTP接口&#xff0c;实现控制无人售货柜&#xff0c;独立控制售货柜、格子柜的柜门。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备名称厂商1智能WiFi…

数值分析复习:Richardson外推和Romberg算法

文章目录 Richardson外推Romberg&#xff08;龙贝格&#xff09;算法 本篇文章适合个人复习翻阅&#xff0c;不建议新手入门使用 本专栏&#xff1a;数值分析复习 的前置知识主要有&#xff1a;数学分析、高等代数、泛函分析 本节继续考虑数值积分问题 Richardson外推 命题&a…

网络爬虫快速入门及爬取百度搜索结果(附源码)

前言 爬虫的基本结构及工作流程 1. 确定目标 首先&#xff0c;确定你想要爬取的目标&#xff0c;包括目标网站或网页、需要提取的数据类型&#xff08;如文本、图片、视频等&#xff09;以及爬取的深度&#xff08;单页、整个网站等&#xff09;。 2. 获取网页内容 使用HT…

为智算产业高质量发展探寻路径,又一重要生态合作启动

4月22日&#xff0c;由中国工业经济联合会主办的“2024中国工业经济高峰论坛智能算力产业高质量发展论坛”落幕。院士专家、研究机构、以及来自智能算力产业上下游企业代表近180人出席&#xff0c;围绕完善算力基础设施、深化算力赋能行业应用、推动区域数字化发展等热点议题展…

【MySQL 数据宝典】【磁盘结构】- 005 Undo log 撤销日志

一、基本介绍 ​ 每当我们要对一条记录做改动时&#xff08;这里的改动可以指 INSERT 、 DELETE 、 UPDATE &#xff09;&#xff0c;都需要留一手 -> 把回滚时所需的东西都给记下来 ​ 你插入一条记录时&#xff0c;至少要把这条记录的主键值记下来&#xff0c;之后回滚的…

大数据技术应用实训室解决方案

一、大数据课程体系 1.1 大数据实验实训课程体系设计依据 大数据实验实训课程体系的设计依据主要围绕培养目标、培养方案和课程体系建设三个方面来展开。 1、培养目标 大数据实验实训课程的设计旨在培养具备大数据理论知识和实践技能的专业人才。具体而言&#xff0c;这些人才…

刷课必备!用Python实现网上自动做题

前言 开学少不了老师会布置一些 软件上面的作业&#xff0c;今天教大家用python制作自动答题脚本&#xff0c;100%准确率哦喜欢的同学记得关注、收藏哦 环境使用 Python3.8Pycharm 模块使用 import requests —> 数据请求模块 pip install requestsimport parsel —>…

TypeError: FormatCode() got an unexpected keyword argument ‘verify‘

背景 使用mmdet3d调试项目&#xff0c;提示下面的错误 笔者使用的mmcv版本为mmcv-full1.4.0 原因分析 从截图中可以看出错误出现在/usr/local/lib/python3.8/dist-packages/mmcv/utils/config.py的第496行&#xff1a;text, _ FormatCode(text, style_configyapf_style, v…

环回光模块

&#x1f44f;&#x1f4cd;环回光模块&#xff08;Lookback&#xff09;&#xff0c;也称为光模块自环测试回路器&#xff0c;用于测试系统或网络中的信号回传。通过回传信号&#xff08;主要是成对连接发射端到接收端的一侧&#xff09;&#xff0c;可以检测网络链路中各种潜…

java网络编程 BufferedReader的readLine方法读不到数据且一直阻塞

最近在整理Java IO相关内容&#xff0c;会遇到一些以前没有注意的问题&#xff0c;特此记录&#xff0c;以供自查和交流。 需求&#xff1a; 基于Java的BIO API&#xff0c;实现简单的客户端和服务端通信模型&#xff0c;客户端使用BufferedReader的readLine方法读取System.i…

​「Python绘图」绘制皮卡丘

python 绘制皮卡丘 一、预期结果 二、核心代码 import turtle print("开始绘制皮卡丘") def getPosition(x, y):turtle.setx(x)turtle.sety(y)print(x, y)class Pikachu:def __init__(self):self.t turtle.Turtle()t self.tt.pensize(3)t.speed(190)t.ondrag(getP…

隋总分享:Temu选品师算不算是蓝海项目?

在当今日新月异的互联网经济浪潮中&#xff0c;跨境电商正成为一股不可忽视的力量。最近&#xff0c;网红隋总对Temu选品师这一职业进行了深入介绍&#xff0c;引发了广泛关注。那么&#xff0c;Temu选品师是否真的可以视为一个蓝海项目呢?本文将对此进行一番细致的探讨。 首先…

python学习笔记B-08:序列结构之列表--列表的遍历操作

列表的遍历操作主要通过以下三种方法实现。 lst list("hello") print("第一种遍历方式&#xff0c;使用for循环&#xff0c;循环变量item直接就是lst中的元素") for item in lst:print(item,end"\t")print("\n\n第二种遍历方式&#xff0…

【HarmonyOS】Stage 模型 - 基本概念

一、项目结构 如图1所示&#xff1a; 图1 从项目结构来看&#xff0c;这个应用的内部包含了一个子模块叫 entry&#xff0c;模块是应用的基本功能单元&#xff0c;它里面包含源代码、资源、配置文件等。 像这样的模块在应用内部可以创建很多。但模块整体来讲就分成两大类&am…

unity中重构(分拆)输入代码

codemonkey的混乱厨房第14节&#xff0c;讲述了怎么来重构代码。 目的&#xff1a;是减少和管理的复杂性&#xff0c;每个类只做一件事&#xff0c;只能做一件事 重构思路分析&#xff1a; 空对象 挂着新类脚本 新类{ 公开方法 public 带返回值 } --------------------------…

【大模型开源篇1】彦宏您怎么看LLaMA3的开源

Meta LLaMA是Meta公司开源的大模型&#xff0c;作为大模型开源界得鼻祖&#xff0c; 刚刚发布LLaMA3。从ChatGPT 拉开了大模型竞赛的序幕&#xff0c;Meta 选择了开源&#xff0c;至此大模型也开始百花齐放的时期&#xff0c;但是开源模型一直无法超过必源模型&#xff0c;如今…