Crates.io | egg-stats |
lib.rs | egg-stats |
version | 0.3.0 |
source | src |
created_at | 2024-09-30 15:05:18.013058 |
updated_at | 2024-10-09 18:56:50.27249 |
description | Generate and view statistics for egg e-graphs |
homepage | https://github.com/sgpthomas/egg-stats |
repository | https://github.com/sgpthomas/egg-stats |
max_upload_size | |
id | 1391810 |
size | 27,304 |
This project makes it easy to visualize statistics about your egg
runs. There are two components: egg-stats
and egg-viz
.
egg-stats
is a library that adds a LoggingRunner
that can wrap any existing egg::Runner
and records customizable statistics to a csv
file.
egg-viz
is a web interface that let's you view the generated csv
files to quickly explore these statistics. The web interface is still in development, and any feedback would be very useful.
You can add the egg-stats
library to your project with:
cargo add egg-stats
You can install the visualizer with:
cargo install egg-viz
LoggingScheduler
is the key data-structure. Simply set it as the scheduler of your runner to generate data. You can wrap any other other egg::RewriteScheduler
, and it will use it to actually schedule rule applications.
You need to set out_file
to an open file, and set logging_enabled
to true to see any data. There are a set of provided recorders to record common statistics. You can also easily implement your own. See the docs for more information.
Here is what an example looks like:
Runner::default()
.with_scheduler(
LoggingScheduler::from(scheduler)
.with_out_file(
OpenOptions::new()
.write(true)
.create(true)
.truncate(true)
.open(path.as_ref())
.unwrap(),
)
.with_logging_enabled(true)
.with_recorder(recorders::Timestamp::new(Instant::now()))
.with_recorder(recorders::NumberENodes)
.with_recorder(recorders::NumberEClasses)
.with_recorder(recorders::BestProgram::new(AstSize, root)),
);
Checkout examples for more complete examples.
Simply run the following command to open the web interface, passing in the directory where your .csv
files are located.
egg-viz <csv data dir>