diff --git a/sbroad-benches/benches/parse.rs b/sbroad-benches/benches/parse.rs
index 4ff0fe7b772830787d2d96a44f28f7fcb41b3971..0ce62f84576a9f49ae8f021af0603cd53f8ca6e8 100644
--- a/sbroad-benches/benches/parse.rs
+++ b/sbroad-benches/benches/parse.rs
@@ -336,6 +336,25 @@ fn bench_full_parsing(c: &mut Criterion) {
     }
 }
 
+fn bench_take_subtree(c: &mut Criterion) {
+    let mut engine = RouterRuntimeMock::new();
+    let param: u64 = 42;
+    let params = vec![Value::from(param)];
+
+    let target_query = get_query_with_many_references();
+    let mut query = Query::new(&mut engine, target_query, params).unwrap();
+
+    let plan = query.get_exec_plan().get_ir_plan();
+    let top_id = plan.get_top().unwrap();
+
+    let bench_name = format!("getting_subtree");
+    c.bench_function(bench_name.as_str(), |b| {
+        b.iter(|| {
+            let _subtree = query.get_mut_exec_plan().take_subtree(top_id).unwrap();
+        })
+    });
+}
+
 fn bench_serde_clone(c: &mut Criterion) {
     let mut engine = RouterRuntimeMock::new();
     let param: u64 = 42;
@@ -402,6 +421,7 @@ criterion_group!(
     benches,
     bench_pure_pest_parsing,
     bench_full_parsing,
-    bench_serde_clone
+    bench_serde_clone,
+    bench_take_subtree,
 );
 criterion_main!(benches);