Skip to content

KraftRicardo/rsonpath-plotting

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rsonpath-plotting

A Python project for generating plots to analyze and visualize results from rsonpath experiments and its lookup-table (LUT) modification.


✨ Features

This repository includes multiple plotting scripts, each producing specialized figures for different aspects of rsonpath performance.
All figures below are automatically generated using real benchmark data.


Bracket Distribution How many curly and how many squary brackets each json has in relation per json. plot_query_skip_percentage

🔎 Query Skip Percentage

plot_query_skip_percentage
Visualizes the percentage of skipped bytes for different queries on a JSON file.

plot_query_skip_percentage


📏 Distance Distributions (per JSON)

plot_distance_distribution_per_json
Plots the distance distribution of a JSON. Three variants:

  • Default: x-axis doubles each step
    plot_distance_distribution_per_json

  • Omit labels and titles (compact mode)
    plot_distance_distribution_per_json_short

  • Fixed-step (64) x-axis growth
    plot_distance_distribution_per_json_64


📏 Distance Distributions (per Query)

plot_distance_distribution_per_query
Plots the distance distribution of all jumps taken during a query on a given JSON.

  • Default: x-axis doubles each step
    plot_distance_distribution_per_query

  • Fixed-step (64) x-axis growth
    plot_distance_distribution_per_query_64

  • With execution time spent in each bucket (relative to total skip time)
    plot_distance_distribution_per_query_timed


⚡ Serde Size and Build Time

plot_serde_size_and_build_time
Plots Serde’s build time and heap ratio compared to the input JSON.

plot_serde_size_and_build_time


🪶 Empty List Optimization

plot_empty_list_opt
Compares rq_legacy vs. rq_legacy_empty_list_opt to evaluate the effect of the empty_list_opt feature.

plot_empty_list_opt


🪶 RQ-LUT-NO-LUT

plot_empty_list_opt
Compares rq_legacy vs. rq_lut_no_lut to evaluate the effect of the base code changes on the speed.

plot_rq_lut_no_lut


🧱 LUT Construction

plot_lut_construction
Compares different LUT implementations in build-time, query-time, and heap size.

plot_lut_construction

After deciding for a LUT implementation one can now plot the LUT build speed and size for different cutoffs, while also tracking how long the collection step of the brackets takes.

lut_build_speed_and_size

🏁 Final Comparison

plot_final
Compares, for each query, how fast rq, rq-lut, and serde are.
Includes build times for LUTs and the Serde DOM.
(rq build time = 0, as it is a streaming approach.)

  • With labels
    plot_final_labeled

  • Without labels
    plot_final_unlabeled


🥇 Optimal vs. Implementations

plot_optimal
Compares query speed of rq-legacy vs. the theoretical optimal vs. rq-lut with varying cutoffs for the COUNT queries.

plot_optimal

A table to find the best cutoff based on that data.

find_best_cutoff_table

Like plot optimal but this time we queried for the complete results (NODE and not COUNT) which means we can also compare it with serde.

plot_optimal_node


About

Project for all the plotting code I needed during my master thesis working on rsonpath-lut.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages