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
This issue aims to gather the current status of the performance initiatives for JSONToolkit.
We would like to tracks observations, hypotheses and ideas.
Performance Investigation Document
Observation
Hypotheses
How to Reproduce
Tracks and Ideas
Cache Performance: How many cache hits and cache misses do we get from CPU caches?
Branch Prediction Issues: Do we have branch prediction issues?
Cache Type: For the first hypothesis, is it data caches or instruction caches causing the bottleneck?
Methods related to std::variant show up in a number of profiles
Come up with a simple tagged union vs. std::variant benchmark.Try replacing std::variant with a tagged union.
Validation of a document requires some memory allocation that is only used for the duration of validation
We can reduce the memory management overhead for these allocations
Try replacing malloc with an implementation that just uses a large block of statically allocated memory for everything. If this helps, use a bump allocator for everything allocated during validation.
Ordering of instructions can have a data-dependent impact on validation time
We can't necessarily guess what order is best and it may change over time. Reordering instructions dynamically may improve performance.
A schema with a large number of properties where only one of the properties fails validation in a sample dataset
Start by measuring the performance gap in a worst-case example to see the potential benefit. Keep track of which instructions cause validation to fail and try to execute these instructions first.
The text was updated successfully, but these errors were encountered:
This issue aims to gather the current status of the performance initiatives for JSONToolkit.
We would like to tracks observations, hypotheses and ideas.
Performance Investigation Document
std::variant
show up in a number of profilesstd::variant
benchmark.Try replacingstd::variant
with a tagged union.The text was updated successfully, but these errors were encountered: