benches: add bench_frompyobject
This commit is contained in:
parent
3858a63b80
commit
ff6fb5dcc2
|
@ -91,6 +91,10 @@ harness = false
|
|||
name = "bench_dict"
|
||||
harness = false
|
||||
|
||||
[[bench]]
|
||||
name = "bench_frompyobject"
|
||||
harness = false
|
||||
|
||||
[[bench]]
|
||||
name = "bench_gil"
|
||||
harness = false
|
||||
|
|
|
@ -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);
|
Loading…
Reference in New Issue