Add Diesel DSL to the select bench

This commit is contained in:
Ryan Leckey 2019-08-18 20:53:19 -07:00
parent 2c9720ed81
commit 0603cb677e

View File

@ -3,6 +3,9 @@
#[macro_use]
extern crate criterion;
#[macro_use]
extern crate diesel;
use criterion::Criterion;
use futures::stream::TryStreamExt;
use tokio::runtime::Runtime;
@ -29,7 +32,7 @@ fn rust_postgres_select(cl: &mut rust_postgres::Client) {
}
fn diesel_select(conn: &diesel::pg::PgConnection) {
use diesel::{query_dsl::RunQueryDsl, QueryableByName};
use diesel::query_dsl::RunQueryDsl;
#[derive(QueryableByName)]
struct Contact {
@ -43,6 +46,19 @@ fn diesel_select(conn: &diesel::pg::PgConnection) {
.unwrap();
}
fn diesel_dsl_select(conn: &diesel::pg::PgConnection) {
use diesel::prelude::*;
table! {
contacts {
id -> BigInt,
name -> Text,
}
}
let _rows: Vec<String> = contacts::table.select(contacts::name).load(conn).unwrap();
}
fn criterion_benchmark(c: &mut Criterion) {
c.bench_function("sqlx select", |b| {
let rt = Runtime::new().unwrap();
@ -74,6 +90,16 @@ fn criterion_benchmark(c: &mut Criterion) {
diesel_select(&conn);
});
});
c.bench_function("diesel dsl select", |b| {
use diesel::Connection;
let conn = diesel::pg::PgConnection::establish(DATABASE_URL).unwrap();
b.iter(|| {
diesel_dsl_select(&conn);
});
});
}
criterion_group!(benches, criterion_benchmark);