Implement t_data_slice API for data extraction from 0 & 1-sided views #483
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.
This PR implements the new data_slice API for zero and one-sided views. Benchmarking shows a consistent 10-15% improvement in calls to
to_json
, but I'd love to have that validated on other machines.Changes:
t_data_slice
allows for data extraction with bounds checking; this solves an issue withperspective-hypergrid
callingget_columns
with row indices that were larger than the number of rows within the engine. The use ofat()
instead ofoperator[]
, IIRC, should prevent undefined behavior from occurring when we index into the underlying slice. @texodus @timkpaine please look over this closely if possible.perspective.js
now pulls column names and row paths from the data slice, instead of making calls to the underlying C++ view.data_slice
and underlying slice vector, but other metadata are stored as copies and returned asconst
references in order to make it easier to interface with from the JS binding.