From 0603cb677ec7545971834857f7c5967af4e00d36 Mon Sep 17 00:00:00 2001 From: Ryan Leckey Date: Sun, 18 Aug 2019 20:53:19 -0700 Subject: [PATCH] Add Diesel DSL to the select bench --- benches/select.rs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/benches/select.rs b/benches/select.rs index f0447d49..cef5ab8b 100644 --- a/benches/select.rs +++ b/benches/select.rs @@ -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 = 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);