Skip to content

inspiredware/node-hdr-histogram-napi

Repository files navigation

node-hdr-histogram-napi

N-API v3 Badge

A Node.js native addon for HdrHistogram using N-API.

This module is in active development and is not yet ready for production use.

Background

This module, which is implemented using N-API, is meant to be an API-compatable alternative to the native-hdr-histogram module which is implemented using NAN. Both modules implement Node.js native addons that wrap the HdrHistogram_c library.

The majority of the files in this module are generated by an automated tool that parses the source C files and generates the binding files. The objective is to create a very light-weight wrapper to the native C functions and then augment these native classes with JavaScript as necessary.

In this module, HdrHistogram and HdrHistogramIterator are native classes implemented using N-API. The JavaScript Histogram class extends the native HdrHistogram class and implements the additional methods necessary to achieve compatibility with the native-hdr-histogram Histogram class.

Implementation

This table shows the existing Histogram methods available in the native-hdr-histogram module (NAN) and the corresponding and additional methods available in this module (N-API).

NAN HdrHistogram_c Function N-API
record hdr_record_value record
min hdr_min min
max hdr_max max
mean hdr_mean mean
stddev hdr_stddev stddev
percentile hdr_value_at_percentile percentile
encode hdr_log_encode encode ‡
decode † hdr_log_decode decode †‡
percentiles hdr_iter_percentile_init hdr_iter_next percentiles ‡
reset hdr_reset reset
hdr_reset_internal_counters resetInternalCounters
hdr_get_memory_size getMemorySize
hdr_record_value_atomic recordAtomic
hdr_record_values recordValues
hdr_record_values_atomic recordValuesAtomic
hdr_record_corrected_value recordCorrectedValue
hdr_record_corrected_value_atomic recordCorrectedValueAtomic
hdr_record_corrected_values recordCorrectedValues
hdr_record_corrected_values_atomic recordCorrectedValuesAtomic
hdr_add add
hdr_values_are_equivalent valuesAreEquivalent
hdr_lowest_equivalent_value lowestEquivalentValue
hdr_count_at_value countAtValue
hdr_log_encode getEncoded
hdr_log_decode setEncoded

† This is a static method.

‡ Implemented in JavaScript using the native N-API classes and accessor methods.

Plan

The immediate plan is to continue enhancing this module until it's ready for production use. These steps are:

  • Modify the Histogram constructor so that it is completely compatible with the native-hdr-histogram version.
  • Complete detailed verification on the code.
  • Generate configuration information to support prebuild for creating and uploading native binaries.
  • Build out unit tests.
  • Implement GitHub CI to prebuild for various architectures.
  • Generate complete documentation.
  • Publish to npm.