回旋镖信标中的数据不一致.



我正在收集一些回旋镖数据,但是这次返回的帧速率数据对我来说没有意义。

我的两个主要问题是

  1. 为什么帧率时间轴数据不匹配
  2. 为什么TTI这么高

首先,我将给出我所看到的完整信标

c.e: "kb8jhepo"
c.f: 61
c.f.d: 524
c.f.m: 2
c.f.s: "kb8jhge3"
c.t.fps: "0*5*62"
c.tti: 2075
c.tti.m: "lt"
c.tti.vr: 948
if: ""
n: 1
nt_con_end: 1591744341954
nt_con_st: 1591744341954
nt_dec_size: 129958
nt_dns_end: 1591744341954
nt_dns_st: 1591744341954
nt_domcomp: 1591744343076
nt_domcontloaded_end: 1591744342895
nt_domcontloaded_st: 1591744342814
nt_domint: 1591744342577
nt_domloading: 1591744342159
nt_enc_size: 41324
nt_fet_st: 1591744341954
nt_first_paint: 1591744342325
nt_load_end: 1591744343120
nt_load_st: 1591744343082
nt_nav_st: 1591744341948
nt_nav_type: 1
nt_protocol: "h2"
nt_red_cnt: 0
nt_req_st: 1591744341964
nt_res_end: 1591744342373
nt_res_st: 1591744342144
nt_ssl_st: 1591744341954
nt_trn_size: 42860
nt_unload_end: 1591744342154
nt_unload_st: 1591744342154
pid: "a6ilbd4j"
pt.fcp: 377
pt.fp: 377
rt.si: "kd7mvv6mutl-NaN"
rt.sl: 0
rt.ss: undefined
ua.plt: "MacIntel"
ua.vnd: "Google Inc."
v: "1.0.0"
vis.st: "visible"

在文档中,计算TTI的算法总结了

/
Putting these two timers together, here's how we measure Visually Ready and Time to Interactive:
1. Determine the highest Visually Ready timestamp (VRTS):
* Largest Contentful Paint (if available)
* First Contentful Paint (if available)
* First Paint (if available)
* domContentLoadedEventEnd
* Hero Images are loaded (if configured)
* Framework Ready (if configured)
2. After VRTS, calculate Time to Interactive by finding the first period of 500ms where all of the following are true:
* There were no Long Tasks
* The FPS was always above 20 (if available)
* Page Busy was less than 10% (if the above aren't available)

帧速率

c.f等于 61,根据文档,这是持续时间基准上的平均帧速率。 然而,当我获取c.t.fps中给出的时间轴数据时,我得到的压缩值为"0*5*62",当我根据他们的算法解压缩时,我得到[6, 6, 6, 6, 6, 2],这显然不是平均到 61。

c.f.d帧速率持续时间为 524 毫秒,这就是为什么我有这么多数据点,但我看不出平均值如何与时间线匹配。

奖励问题:有人可以提供关于帧速率何时开始和停止测量的见解吗?

TTI

TTI更令人困惑。 我从信标 2075 和所使用的方法中获得的值是lt(或 LongTask(。 但是,其他数据点不支持将其作为TTI值。 视觉准备的时间要短得多,为 948, 信标中没有长任务数据,所以大概这不是计算 TTI 的一个因素.

剩下的最后一件事是帧速率,如上所述,这对我来说似乎并不合适。 我不清楚帧速率何时(或是否有(满足这些要求

通过挑选回旋镖代码,我最终能够自己解决这个问题......

[6, 6, 6, 6, 6, 2]数组更像是每 100 毫秒的帧数,而不是 fps。 TTI实际上是在这个块上计算的。

if (idleIntervals >= TIME_TO_INTERACTIVE_IDLE_INTERVALS) {
tti = startTime + ((j - TIME_TO_INTERACTIVE_IDLE_INTERVALS) * COLLECTION_INTERVAL);
// ensure we don't set TTI before TTVR
tti = Math.max(tti, visuallyReady);
break;
}

它真正想说的是连续idleIntervals的数量需要>= 5(TIME_TO_INTERACTIVE_IDLE_INTERVALS(。

在我上面的例子中,我们没有很长的任务数据和时间在 tti 之前发生视觉准备,因此我们只剩下每秒的帧速率。 如上所述,我错误地解释了这些利率

当它使用 fps 来确定间隔是否空闲时,它使用以下代码块

if (data.fps && (!data.fps[j] || data.fps[j] < TIME_TO_INTERACTIVE_MIN_FPS_PER_INTERVAL)) {
// No FPS or less than 20 FPS during this interval
idleIntervals = 0;
continue;
}

TIME_TO_INTERACTIVE_MIN_FPS_PER_INTERVAL实际上是2,是在此行上计算的

/**
* For Time to Interactive, minimum FPS per COLLECTION_INTERVAL.
*/
var TIME_TO_INTERACTIVE_MIN_FPS_PER_INTERVAL =
TIME_TO_INTERACTIVE_MIN_FPS / (1000 / COLLECTION_INTERVAL);

因此,每秒帧速率是 tti 值的限制因素。 测量的前 5 个帧速率值对于 tti 来说被认为是"好"。 但它仍然比 ttvr 高得多的原因是因为帧速率直到后来才开始测量。

开始测量帧速率的时间由信标值c.f.s给出 (base36 编码纪元时间(. 回旋镖测量的任何内容的时间由c.e给出。 如果您在 wiki 中的信标示例中采用这两者的差异,您将获得回旋镖返回的 tti 值

相关内容

  • 没有找到相关文章

最新更新