Skip to content

Commit f22dc9b

Browse files
committed
Add raw sql comparison
1 parent 293c70f commit f22dc9b

File tree

1 file changed

+52
-6
lines changed

1 file changed

+52
-6
lines changed

benches/value.rs

Lines changed: 52 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use core::fmt;
12
use std::hint::black_box;
23

34
use criterion::{Criterion, criterion_group, criterion_main};
@@ -10,7 +11,25 @@ pub enum Char {
1011
Character,
1112
}
1213

13-
fn small_type(value: i32) -> SelectStatement {
14+
fn small_raw(value: i32) -> Result<String, fmt::Error> {
15+
let mut str = String::new();
16+
str.write_str("SELECT ")?;
17+
str.write_str(&Char::Id.into_iden().to_string())?;
18+
str.write_str(" FROM ")?;
19+
str.write_str(&Char::Table.into_iden().to_string())?;
20+
str.write_str(" WHERE ")?;
21+
for _ in black_box(0..9) {
22+
str.write_str(&Char::Id.into_iden().to_string())?;
23+
str.write_str(" = ")?;
24+
write!(str, "{value}")?;
25+
str.write_str(" AND ")?;
26+
}
27+
str.write_str("1=1")?;
28+
29+
Ok(str)
30+
}
31+
32+
fn small_select(value: i32) -> SelectStatement {
1433
Query::select()
1534
.column(Char::Character)
1635
.from(Char::Table)
@@ -27,7 +46,27 @@ fn small_type(value: i32) -> SelectStatement {
2746
.to_owned()
2847
}
2948

30-
fn large_type(value: jiff::Zoned) -> SelectStatement {
49+
fn large_raw(value: &jiff::Zoned) -> Result<String, fmt::Error> {
50+
let mut str = String::new();
51+
str.write_str("SELECT ")?;
52+
str.write_str(&Char::Character.into_iden().to_string())?;
53+
str.write_str(" FROM ")?;
54+
str.write_str(&Char::Table.into_iden().to_string())?;
55+
str.write_str(" WHERE ")?;
56+
57+
for _ in 0..9 {
58+
str.write_str(&Char::Character.into_iden().to_string())?;
59+
str.write_str(" = '")?;
60+
write!(str, "{value}")?;
61+
str.write_str("' AND ")?;
62+
}
63+
64+
str.write_str("1=1")?;
65+
66+
Ok(str)
67+
}
68+
69+
fn large_select(value: jiff::Zoned) -> SelectStatement {
3170
Query::select()
3271
.column(Char::Character)
3372
.from(Char::Table)
@@ -49,14 +88,21 @@ fn criterion_benchmark(c: &mut Criterion) {
4988
let value = black_box(jiff::Zoned::now());
5089

5190
group.bench_function("select_construction/small", |b| {
52-
b.iter(|| small_type(black_box(123)))
91+
b.iter(|| small_select(black_box(123)))
92+
});
93+
group.bench_function("select_construction/small/raw", |b| {
94+
b.iter(|| small_raw(black_box(123)).unwrap())
5395
});
5496

5597
group.bench_function("select_construction/large", |b| {
56-
b.iter(|| large_type(value.clone()))
98+
b.iter(|| large_select(value.clone()))
99+
});
100+
101+
group.bench_function("select_construction/large/raw", |b| {
102+
b.iter(|| large_raw(&value).unwrap())
57103
});
58104

59-
let select_small = black_box(small_type(black_box(123)));
105+
let select_small = black_box(small_select(black_box(123)));
60106
group.bench_function("select_and_build/small/mysql", |b| {
61107
b.iter(|| select_small.build(MysqlQueryBuilder))
62108
});
@@ -76,7 +122,7 @@ fn criterion_benchmark(c: &mut Criterion) {
76122
b.iter(|| select_small.to_string(SqliteQueryBuilder))
77123
});
78124

79-
let select_large = black_box(large_type(value));
125+
let select_large = black_box(large_select(value));
80126
group.bench_function("select_and_build/large/mysql", |b| {
81127
b.iter(|| select_large.build(MysqlQueryBuilder))
82128
});

0 commit comments

Comments
 (0)