You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Perf][C++] Load a device's timeseries indexes with one pread instead of per-measurement reads #1074
TsFileIOReader::get_timeseries_indexes handles each requested measurement
individually: binary search in the device index node, a separate read_file_->read (PREAD backend, so one syscall each), deserialization into a
temporary arena, then a clone into the caller's arena. For a 4500-column table
that is ~4500 preads plus ~4500 deserialize+clone.
Profiling a wide-table read showed do_load_timeseries_index at ~7.6%.
Proposed changes
Collect every measurement leaf once (get_all_leaf), read the whole contiguous
timeseries-index range with a single pread, and deserialize each index directly
into the caller's arena; build a name -> index map and return the requested
ones.
Implemented in #1072; index loading dropped from ~7.8% to ~0.2% of the query.
Activity