Skip to content

Conversation

@grcevski
Copy link
Owner

@grcevski grcevski commented Dec 17, 2019

This is a small change that removes an object allocation in a common loop where we deserialize Maps in Pinot. It works by creating one secondary temporary buffer and then we adjust the buffer start and end, instead of making new buffer each time.

Performance measurement results:

Machine configuration:
4 core (8 threads) Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz
32GB of RAM
Linux x86-64, kernel: 5.0.0-37-generic

Benchmark configuration:
TPC-H (optimal index)
20 clients
180s runtime

Results (QPS higher is better, response time lower is better)

Base with (parse-query-cache):
Time Passed: 180.014s, Query Executed: 546726, QPS: 3037.1304454098013, Avg Response Time: 6.5738871024974115ms

Improved (this branch):
Time Passed: 180.013s, Query Executed: 567074, QPS: 3150.1835978512663, Avg Response Time: 6.337580280527762ms

Todo:

  • Run unit tests

Co-authored-by: @grcevski @charliegracie @macarte @adityamandaleeka

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants