benches: add bench_frompyobject

This commit is contained in:
David Hewitt 2021-12-22 00:27:13 +00:00
parent 3858a63b80
commit ff6fb5dcc2
2 changed files with 30 additions and 0 deletions

View File

@ -91,6 +91,10 @@ harness = false
name = "bench_dict"
harness = false
[[bench]]
name = "bench_frompyobject"
harness = false
[[bench]]
name = "bench_gil"
harness = false

View File

@ -0,0 +1,26 @@
use criterion::{criterion_group, criterion_main, Bencher, Criterion};
use pyo3::{prelude::*, types::PyString};
#[derive(FromPyObject)]
enum ManyTypes {
Int(i32),
Bytes(Vec<u8>),
String(String)
}
fn enum_from_pyobject(b: &mut Bencher) {
Python::with_gil(|py| {
let obj = PyString::new(py, "hello world");
b.iter(|| {
let _: ManyTypes = obj.extract().unwrap();
});
})
}
fn criterion_benchmark(c: &mut Criterion) {
c.bench_function("enum_from_pyobject", enum_from_pyobject);
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);