YAOTU INSIGHTS

Node构建JSON清单如何做最近秩P90耗时:用本地脚本建立可复核指标

Node构建JSON清单如何做最近秩P90耗时:用本地脚本建立可复核指标
JSON 解码只能确认格式不代表字段齐全把第三方日志转换成本文中间格式时应另外核对键名、单位和类型。本文从Node构建JSON清单的受控中间格式读取记录统一使用毫秒和退出码。要观察耗时分布的偏慢部分可以计算百分位但必须说明采用哪种算法。先固定可回放的数据前端构建包装器可在一次运行结束后把各阶段结果整理为受控中间格式交给离线看板回放。这里采用对象数组保存完整快照故意留下两次同名测试使失败尝试不会被后来的成功覆盖。验收先确认数组成员仍是独立事件再检查耗时与退出状态没有被显示层改写。importjson raw[{step:build,ms:120,code:0},{step:test,ms:40,code:1},{step:test,ms:60,code:0},{step:pack,ms:80,code:2}]恢复结构并统一字段清单顶层是记录数组每条记录包含步骤名、毫秒数和退出码。读取结构化 JSON 可以保留数值类型不需要从彩色终端输出里猜测字段。rowsjson.loads(raw)ifany(r[ms]0forrinrows):raiseValueError()计算本篇的指标本例把百分位定义为最近秩法把九成样本位置向上取整再读取有序序列。先写清算法才不会与采用插值的统计工具产生无意义争论。timessorted(r[ms]forrinrows)nlen(times);resulttimes[(9*n9)//10-1]ifnelseNone对照独立期望值期望值根据样本数与向上取整的位置独立推导。验收不仅要比较最终耗时还要复核位置从一开始计数到数组下标从零开始的转换当样本数恰好是十的倍数时也应补充边界用例。want120ifresult!want:raiseValueError(result)print(result)用四条耗时记录演示位置向上取整使九成位置落到第四个样本。这个选择可以明确区分最近秩法与插值法避免两个工具给出不同数值时只根据显示结果就判断某个实现错误。后续替换导出格式时可以保留相同结构的记录与指标测试改变指标定义时则可以重复利用同一份输入样本分别检查两类变化。