siddharthteotia commented on issue #8634:
URL: https://github.com/apache/pinot/issues/8634#issuecomment-1118764881
- It seems like there is a potential performance overhead associated with
dynamic virtual call dispatch given that "vtable stub" shows up as taking top
22% of time.
- This is most likely coming from return _reader.read(docId) in
FixedBitSVForwardIndexReaderV2 as the read() call has to be dispatched to the
actual bit reader (1 of 32 types)
- The function call overhead and in fact virtual dispatch overhead can
probably be optimized if we convert the APIs to bulk based in
SVScanDocIdIterator
-- next() gathers docIds in an array
-- calls doesValueMatch on array instead of a single docId
-- Call FixedBitSVForwardIndexReaderV2.readDictIds() instead of
FixedBitSVForwardIndexReaderV2.getDictId as done in today's code
-- Call _predicateEvaluator.applySV on an array / batch of dictIds
80% of the time is spent in doesValueMatch().
- 60% in FixedBitSVForwardIndexReaderV2.getdictId
- 10% each in accessing the outer class member variable (I am not super sure
if this is even possible but can investigate)
<img width="2509" alt="Screen Shot 2022-05-05 at 9 17 12 AM"
src="https://user-images.githubusercontent.com/2150694/166967588-042a68e3-5398-46fe-ae2c-c520f9a044c8.png">
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]