From 405b4c18d53933cf3861598bfe42ea35de0a729f Mon Sep 17 00:00:00 2001
From: Dima Koltsov <dkoltsov@picodata.io>
Date: Thu, 24 Nov 2022 20:45:28 +0300
Subject: [PATCH] test(sbroad-benches): add bench for AST parsing

---
 sbroad-benches/benches/parse.rs | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/sbroad-benches/benches/parse.rs b/sbroad-benches/benches/parse.rs
index 4552218082..b877ec6fcf 100644
--- a/sbroad-benches/benches/parse.rs
+++ b/sbroad-benches/benches/parse.rs
@@ -1,12 +1,14 @@
 use criterion::{criterion_group, criterion_main, Criterion};
 use sbroad::backend::sql::tree::{OrderedSyntaxNodes, SyntaxPlan};
 use sbroad::executor::Query;
+use sbroad::frontend::sql::ast::AbstractSyntaxTree;
+use sbroad::frontend::Ast;
 use sbroad::ir::tree::Snapshot;
 use sbroad::ir::value::Value;
 use sbroad_benches::engine::RouterRuntimeMock;
 
 #[allow(clippy::too_many_lines)]
-fn query1_sql() -> String {
+fn query_sql() -> String {
     let sql = r#"SELECT
     *
     FROM
@@ -233,7 +235,18 @@ fn query1_sql() -> String {
     sql.into()
 }
 
-fn query1(pattern: &str, params: Vec<Value>, engine: &mut RouterRuntimeMock) {
+fn parse_ast(pattern: &str) {
+    AbstractSyntaxTree::new(pattern).unwrap();
+}
+
+fn bench_ast_build(c: &mut Criterion) {
+    c.bench_function("parsing_ast", |b| {
+        let sql_str = query_sql();
+        b.iter(|| parse_ast(&sql_str));
+    });
+}
+
+fn build_ir(pattern: &str, params: Vec<Value>, engine: &mut RouterRuntimeMock) {
     let mut query = Query::new(engine, pattern, params).unwrap();
     let top_id = query.get_exec_plan().get_ir_plan().get_top().unwrap();
     let buckets = query.bucket_discovery(top_id).unwrap();
@@ -244,20 +257,20 @@ fn query1(pattern: &str, params: Vec<Value>, engine: &mut RouterRuntimeMock) {
     plan.to_sql(&nodes, &buckets).unwrap();
 }
 
-fn bench_query1(c: &mut Criterion) {
+fn bench_ir_build(c: &mut Criterion) {
     let mut engine = RouterRuntimeMock::new();
-    let sql = query1_sql();
+    let sql = query_sql();
     let mut sys_from: u64 = 42;
     let mut reestrid: u64 = 666;
-    c.bench_function("query1", |b| {
+    c.bench_function("building_ir", |b| {
         b.iter(|| {
             let params = vec![Value::from(sys_from), Value::from(reestrid)];
             sys_from += 1;
             reestrid += 1;
-            query1(&sql, params, &mut engine);
+            build_ir(&sql, params, &mut engine);
         });
     });
 }
 
-criterion_group!(benches, bench_query1);
+criterion_group!(benches, bench_ir_build, bench_ast_build);
 criterion_main!(benches);
-- 
GitLab