前言
native-hdr-histogram 是一个高性能的直方图库,提供出色的数据精度和快速统计计算。它是一个 C++ 库,并以 Node.js 的原生模块形式发布到 npm 包管理器上。本篇文章将详细介入该 npm 包的使用方法,涵盖安装、基本使用和高级特性。
安装
安装 native-hdr-histogram 包可通过 npm 进行安装,命令如下:
npm install native-hdr-histogram
基本用法
创建一个直方图对象
要使用 native-hdr-histogram,首先需要创建一个直方图对象。 创建直方图时,需要指定以下参数:
- 数组长度:该值表示将要统计的样本数量。当达到该值时,将不再接受更多的样本。
- 最小边界:直方图采用半开区间进行分桶,min 表示最小值(包含)。
- 最大边界:直方图采用半开区间进行分桶,max 表示最大值(不包含)。
- 数字精度:拟合直方图时,数字精度的值越高,直方图所占用的空间越大。通常使用
DefaultNumberSystem
构造函数即可。
const hdr = require('native-hdr-histogram'); const options = { numberOfSignificantValueDigits: 3, lowestDiscernibleValue: 1, highestTrackableValue: 10000, bufferSize: 1000000 }; const histogram = hdr.build(options);
添加值到直方图
添加到直方图后,将自动更新直方图中样本的数量和桶的计数器。
histogram.recordValue(100); histogram.recordValue(2000); histogram.recordValue(5000); histogram.recordValueWithCount(10000, 3);
获取直方图数据
native-hdr-histogram 能够提供关于数据分布的各种信息,例如:
- 最小值
- 最大值
- 序列平均值
- 序列中位数
- 序列 75, 90, 95, 99 和 99.9 的分位数,以及其他百分位数。
- 标准偏差,方差,各种平均值,峰度和偏度。
- Percentiles(分位数)
console.log('Min: ' + histogram.minValue()); console.log('Max: ' + histogram.maxValue()); console.log('Mean: ' + histogram.mean()); console.log('StdDev: ' + histogram.stddev()); console.log('50th percentile: ' + histogram.percentile(50)); console.log('90th percentile: ' + histogram.percentile(90));
高级特性
序列化直方图数据
native-hdr-histogram 支持序列化直方图数据以进行持久化存储,方便后续恢复的使用。
const fs = require('fs'); const histogram = hdr.build(1, 1000, 100000000, 2); histogram.recordValue(10); fs.writeFileSync('histogram.bin', histogram.encode());
要恢复直方图,可以使用以下代码从先前保存的文件中读取数据:
const histogram = hdr.decode(fs.readFileSync('histogram.bin'));
持续记录时间
native-hdr-histogram 支持持续记录某个时间区间内的值,以支持检索和分析以后的值。可以通过以下方式启用持续记录:
-- -------------------- ---- ------- ----- --------- - ------------ ----- ---------- -- --- -------------------------- -------------------------- -------------------------- ------------- -- - --------------------------- --------------------------- --------------------------- -- ------
上述代码将在 1 秒之后开始录制新的值。
合并不同直方图
native-hdr-histogram 支持将不同时间区间历史数据合并。这对于记录跨度较长的值非常有用。
-- -------------------- ---- ------- ----- --- - -------------------------------- ----- ---------- - ------------ ----- ---------- --- ----- ---------- - ------------ ----- ---------- --- --------------------------- --------------------------- --------------------------- --------------------------- --------------------------- --------------------------- ----- ---------------- - ---------------------- ------------- ------------------- ---- - - ----------------------------- ------------------- ---- - - ----------------------------- ------------------- ----- - - -------------------------
总结
在本篇文章中,我们详细说明了 native-hdr-histogram 的使用方法。通过本文的学习,我们可以轻松地实现性能优秀且功能强大的直方图。 此外,我们还介绍了该 npm 包的高级特性,例如其他记录方式以及直方图数据的序列化和合并。了解 native-hdr-histogram 的能力将为我们在许多不同的数据分析和性能测量上下文中提供极大的帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/74027