当前位置:网站首页>NVIDIA NeMo Metrics 轻量性能采集系统
NVIDIA NeMo Metrics 轻量性能采集系统
2022-08-02 11:45:00 【[山青花欲燃]】
Nemetrics(Nemo Metrics开源) 利用最新的 W3C Performance 提案 (比如 PerformanceObserver), 用于测量第一个dom生成的时间(FP/FCP)、用户最早可操作时间(fid|tti)和组件的生命周期性能。向监控后台报告实际用户测量值。
首次绘制 (FP) 首次内容绘制 (FCP) 首次输入延迟 (FID) 主角元素(Hero element) 框架、组件生命周期监控 Navigation Timing

开始测量
首次绘制 (FP)
FP 标记浏览器渲染任何在视觉上不同于导航前屏幕内容之内容的时间点
const nemetric = new Nemetric({
firstPaint: true
});
// Nemetric: First Paint 1482.00 ms
首次内容绘制 (FCP)
FCP 标记的是浏览器渲染来自 DOM 第一位内容的时间点,该内容可能是文本、图像、SVG 甚至 <canvas> 元素。
const nemetric = new Nemetric({
firstContentfulPaint: true
});
// Nemetric: First Contentful Paint 2029.00 ms
首次输入延迟 (FID)
FID 测量用户首次与站点交互时(即,当他们单击链接,点击按钮或使用自定义的,由JavaScript驱动的控件)到浏览器实际能够回应这种互动的延时。
const nemetric = new Nemetric({
firstInputDelay: true
});
// Nemetric: First Input Delay 3.20 ms
Navigation Timing

const nemetric = new Nemetric({
navigation timing: true
});
Nemetric: NavigationTiming
dnsLookupTime: 0
downloadTime: 0.69
fetchTime: 12.56
headerSize: 317
timeToFirstByte: 8.59
totalTime: 9.28
workerTime: 0
在开发者工具中标记指标
性能标记 (自定义时间测量API) 用于在浏览器的性能条目中创建自定义性能标记。
nemetric.start('doStuff');
doStuff(300);
nemetric.end('doStuff');
// Nemetric: doStuff 0.14 ms
组件首次渲染
当浏览器将像素渲染到屏幕时,此指标会在创建新组件后立即标记该点。
nemetric.start('togglePopover');
$(element).popover('toggle');
nemetric.endPaint('togglePopover');
// Nemetric: togglePopover 10.54 ms
自定义日志记录
保存一段时间并且按照想要的方式打印出来
const nemetric = new Nemetric({
logPrefix: 'warren.js:'
});
nemetric.start('doStuff');
doStuff(500);
const duration = this.nemetric.end('doStuff');
nemetric.log('Custom logging', duration);
//warren.js: Custom logging 0.14 ms
React
结合React 框架,我们可以开始配置Nemetric来收集初始化性能指标(比如 FCP,FID)。
将nemetric.start() 和 nemetric.endPaint() API用于组件的生命周期,已测量绘制组件所需要的时间。
import React from 'react';
import Nemetric from 'nemetric';
import request from 'request';
const nemetric = new Nemetric({
firstContentfulPaint: true,
firstInputDelay: true
});
export default class App extends React.Component {
constructor() {
// 开始测量要绘制的组件时间
nemetric.start('AppAfterPaint');
}
loadData = async () => {
await request.get('whatever1');
await request.get('whatever2');
// 结束测量部件绘制时间
nemetric.endPaint('AppAfterPaint');
}
render() {
const data = this.loadData();
return (
<div>
<h2>Nemo App</h2>
<div>{
data}</div>
</div>
);
}
}
分析
Performance Analytics

### 通用分析平台支持
在`Nemetric`配置回调以支持任意平台
```javascript
const nemetric = new Nemetric({
analyticsTracker: ({data,metricName, duration, browser}) => {
navigator.sendBeacon(BI_URL,{data,metricName, duration,browser});
})
});
自定义 & 工具集
默认选项
在构造函数中提供给Nemetric默认选项。
const options = {
// Metrics
firstContentfulPaint: false,
firstPaint: false,
firstInputDelay: false,
// Analytics
analyticsTracker: undefined,
// Logging
logPrefix: 'Nemetric:',
logging: true,
maxMeasureTime: 15000,
warning: false,
debugging: false,
//是否在端内(针对端内做其他动作)
inApp:true,
//采样率0-1
sampleRate:1,
};
工具集
Nemetric 公开了一些方法和属性,这些方法和属性可能对扩展这个库的人有用。
const nemetric = new Nemetric({
firstContentfulPaint: true,
firstInputDelay: true,
});
// Values
nemetric.firstPaintDuration;
nemetric.firstContentfulPaintDuration;
nemetric.firstInputDelayDuration;
// Aync Values
const durationFCP = await nemetric.observeFirstContentfulPaint;
const durationFID = await nemetric.observeFirstInputDelay;
// 将自定义用户时间标识发送到Google Analytics
nemetric.sendTiming(metricName, durationFCP);
参考文章
边栏推荐
- 【2022 小目标检测综述】Towards Large-Scale Small Object Detection: Survey and Benchmarks
- Crack detection technology based on deep learning
- Golang map数组按字段分类
- ssm网页访问数据库数据报错
- 免费的中英文翻译软件-自动批量中英文翻译软件推荐大全
- excel 批量翻译-excel 批量函数公司翻译大全免费
- Oracle 19c 连接PDB
- When not to use () instead of Void in Swift
- What is the future of smartwatches?
- Coroutines and Lifecycle in Kotlin
猜你喜欢

npm run serve启动报错npm ERR Missing script “serve“
![[kali-information collection] (1.8) ARP reconnaissance tool _Netdiscover](/img/04/f477cd8726d147b892f6050d46c312.png)
[kali-information collection] (1.8) ARP reconnaissance tool _Netdiscover

CCF paper conference IEEE how to query all articles of a conference journal

网站自动翻译-网站批量自动翻译-网站免费翻译导出

面积曲线AUC(area under curve)

如何通过DBeaver 连接 TDengine?

使用kubesphere图形界面创建一个应用操作流程

面积曲线AUC(area under curve)
![[kali-information collection] (1.9) Metasploit + search engine tool Shodan](/img/d2/6fae03d7597daa908a6816abc34e04.png)
[kali-information collection] (1.9) Metasploit + search engine tool Shodan

力扣977-有序数组的平方——暴力法&双指针法
随机推荐
doc2vec和word2vec(zigbee简介及应用)
AQS-AbstractQueuedSynchronizer
AdguardHome如何配置设置?我的AdguardHome配置内容过滤器拦截列表
Golang map数组按字段分类
Mysql transaction isolation level and MVCC (multi-version concurrency control)
Likou 35 - search for insertion position - binary search
npm run dev 和 npm run serve区别
5G网络切片技术
SQL function $TRANSLATE
力扣151-颠倒字符串中的单词
openresty 性能优化
项目监控六大事项
【MySQL】多表联合查询、连接查询、子查询「建议收藏」
WPF 实现窗体抖动效果
图形处理单元(GPU)的演进
免费的中英文翻译软件-自动批量中英文翻译软件推荐大全
学习经验分享之七:YOLOv5代码中文注释
ssm网页访问数据库数据报错
数字化转型中的低代码
看我如何用多线程,帮助运营小姐姐解决数据校对系统变慢!