pub fn time_plot(
file_name: &str,
measurements: Measurements,
config: &PlotConfig<'_>,
)Expand description
Plots the data from the Measurements using plotters.
The plot is saved to the file specified by file_name, the file created will be an SVG file.
ยงArguments
file_name- The name of the file to save the plot tomeasurements- The measurements to plotbuilder- The builder that was used to generate the measurements
Examples found in repository?
examples/sorting/main.rs (line 49)
17fn main() {
18 // Create a distribution for the length of the vectors
19 // Here we use an exponential distribution with a minimum of 1000 and a maximum of 500_000
20 let length_distribution = Exponential::new(1000..=500_000);
21
22 // Create the builder for the vectors
23 let vector_builder = InputBuilder::new(length_distribution, ());
24
25 // Build the vectors
26 // Here we build 2000 vectors, 10 of each length
27 let mut vectors = vector_builder.build_with_repetitions(200, 10);
28
29 // Create a slice of the algorithms we want to measure
30 let algorithms: &[(fn(&mut input::InputVec), &str); 2] = &[
31 (merge_sort_input, "Merge sort"),
32 (quick_sort_input, "Quick sort"),
33 ];
34
35 // Measure the algorithms on the vectors, given a relative error of 0.001
36 let results = measure_mut(&mut vectors, algorithms, 0.001);
37
38 let result_clone = results.clone();
39 // Serialize the results to a json file
40 result_clone.serialize_json("results.json");
41
42 let file_name = "results/sorting.svg";
43
44 // Plot the results
45 let config = PlotConfig::default()
46 .with_title("Sorting algorithms")
47 .with_caption("The time plot of sorting algorithms");
48
49 time_plot(file_name, results, &config);
50}More examples
examples/search/main.rs (line 56)
19fn main() {
20 // Create a distribution for the length of the vectors
21 // Here we use an uniform distribution with a minimum of 10 and a maximum of 100_000
22 let length_distribution = Uniform::new(10..=100_000);
23
24 // Create the builder for the vectors
25 // Here we choose to use the fast generator method in order to generate ordered vectors
26 let vector_builder = InputBuilder::new(length_distribution, Generator::Fast);
27
28 // Build 200 vectors
29 let vectors = vector_builder.build(200);
30
31 // Create a slice of the algorithms we want to measure
32 let algorithms: &[(fn(&input::SearchInput) -> Option<usize>, &str); 2] = &[
33 (linear_search_input, "Linear search"),
34 (binary_search_input, "Binary search"),
35 ];
36
37 // Measure the algorithms on the vectors, given a relative error of 0.001
38 let results = measure(&vectors, algorithms, 0.001);
39
40 let file_name = "results/search.svg";
41
42 // Here we print the linear regression of the log-log scale of the results
43 for result in results.clone().measurements {
44 let log_linear_regression = result.log_log_scale().linear_regression();
45 println!(
46 "{}: {} * x + {}",
47 result.algorithm_name, log_linear_regression.0, log_linear_regression.1
48 )
49 }
50
51 let config = PlotConfig::default()
52 .with_title("Search in an ordered vector")
53 .with_caption("The time plot of searching algorithms in an ordered vector");
54
55 // Plot the results
56 time_plot(file_name, results, &config);
57}