-
Notifications
You must be signed in to change notification settings - Fork 17
(WIP) Add benchmarks comparing performance of parse functions #50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
2871b73
to
49d61b1
Compare
…hmark flamegraphs.
SummaryI couldn't find a way to expose For this query, DetailsAs I discussed with @seanlinsley on Slack, I couldn't find a way to expose You can run
|
The initial flamegraph for |
brunch::benches!( | ||
Bench::new("pg_query_parse_protobuf") | ||
.run_seeded_with(c_seed, |query| { | ||
unsafe { pg_query_parse_protobuf(query.as_ptr() as *const c_char) } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It might be interesting to include the deserialization in Rust as well, so we can get a sense for where to optimize (if we were to optimize the serialization itself).
For the protobuf parse benchmark we can use the same mechanism the crate currently uses. For JSON we could (just for testing) use the mechanism that pg_parse uses (which shares a common history with this crate, but we since diverged to focus on the Protobuf format).
Probably out of scope of this PR but a cool addition would be comparisons to datafusion-sqlparser-rs |
Additional changes that were needed for benchmarking purposes, but may not be wanted:
pg_query_raw_parse
to the bindingspg_query::bindings