5 releases

0.1.4 Oct 21, 2022
0.1.3 Sep 20, 2022
0.1.2 Jul 4, 2022
0.1.1 Jul 2, 2022
0.1.0 Jun 16, 2022

#253 in Profiling

38 downloads per month

Apache-2.0

26KB
566 lines

big_o

big_o GitHub Actions big_o on crates.io big_o on docs.rs

Infers asymptotic computational complexity.

big_o helps to estimate computational complexity of algorithms by inspecting measurement data (eg. execution time, memory consumption, etc). Users are expected to provide measurement data, big_o will try to fit a set of complexity models and return the best fit.

Example

use assert_approx_eq::assert_approx_eq;

// f(x) = gain * x ^ 2 + offset
let data = vec![(1., 1.), (2., 4.), (3., 9.), (4., 16.)];

let (complexity, _all) = big_o::infer_complexity(data).unwrap();

assert_eq!(complexity.name, big_o::Name::Quadratic);
assert_eq!(complexity.notation, "O(n^2)");
assert_approx_eq!(complexity.params.gain.unwrap(), 1.0, 1e-6);
assert_approx_eq!(complexity.params.offset.unwrap(), 0.0, 1e-6);
assert!(complexity.rank < big_o::complexity("O(n^3)").unwrap().rank);

Dependencies

~3MB
~58K SLoC