Performance of object (Array) encoding : #7
Merged
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.
Instead of a recursive approche for encoding/decoding which implies multiple calls to escape/unescape for nested values and ever-growing escaped strings, use another scheme
Encoding:
K
for each array opened directly before it, and suffix it with a!
for each array closed directly after it"
Encoding is done in a single pass on all items of the nested array.
Decoding:
"
.K
s and suffix!
s), and push the unescaped and decoded value at the appropriate depth of the nestedarrayDecoding is also done in a single pass on all items
I also reworked the benchmark to use
process.hrtime
(more precise thanDate
) and to allow benchmarking of deep nested array vs flat arrays.