我正在使用带有 selenium 的 browsermob 创建一个 har 文件,然后尝试分析该文件。查看文件我得到的时间如下:'startedDateTime':'2016-05-31T14:37:06.752-06:00' 这很好,但我想要更精确,如果可能的话,精确到微秒。
我可以在 google chrome 开发工具的 har 文件中看到它至少在那里是可能的。
我可以在 broswermob 或 selenium 中设置一个设置以获得额外的精度或以其他方式捕获这种额外的精度吗?
我正在使用带有 selenium 的 browsermob 创建一个 har 文件,然后尝试分析该文件。查看文件我得到的时间如下:'startedDateTime':'2016-05-31T14:37:06.752-06:00' 这很好,但我想要更精确,如果可能的话,精确到微秒。
我可以在 google chrome 开发工具的 har 文件中看到它至少在那里是可能的。
我可以在 broswermob 或 selenium 中设置一个设置以获得额外的精度或以其他方式捕获这种额外的精度吗?
HAR 规范将pages
和对象的 startedDateTime 指定entries
为:
startedDateTime [string] - 请求开始的日期和时间戳 (ISO 8601 - YYYY-MM-DDThh:mm:ss.sTZD)。
该ss.s
部分有点模棱两可,但规范中给出的示例仅达到千分之一秒。所以 BrowserMob 代理只创建千分之一的条目,以避免破坏 HAR 阅读器。
大于毫秒的精度可能会在计时中引入大量额外的噪音。与 HTTP 请求的“实际”性能无关的各种事物(例如 CPU 调度)都可能导致纳秒的差异。当然,毫秒也会发生这种情况,但是你得到的越精确,时间就越不准确。
最终,startedDateTime 真正指示的是系统时钟报告给由 BMP 产生的某个 CPU 线程的时间,该线程在网络接口接收到 HTTP 请求的最后一个数据包后的某个不确定时间启动,由操作系统处理,处理由 JVM 解码,并由 netty 解码,这是异步发生的,没有时间保证。它只应被视为“合理”的近似值。FWIW,这也是 Chrome 可以做出的唯一保证。