[Suggestion] Small exports for distributed programs #3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi,
This is a fork used in large distributed programs where I work. It adds a
Distributable
class that inherits fromDigest
. The purpose of that class is to minimize the size of the exported state (toArray
) so that a node wanting to read a percentile value can fetch lots of small internal states from each node and recompute the percentile quickly.It implements
toList()
, which is a more compact version oftoArray()
. It uses arrays to save space on the countlessmean: ..., n: ...
. The centroids can be pushed back into a new Distributable instance using.push(centroid[0], centroid[1])
.I have no idea if this would be useful to you or anyone else, but I'm opening this PR in case you find it interesting and/or want to merge it.