diff --git a/spec/benchmarks/banzai_benchmark.rb b/spec/benchmarks/banzai_benchmark.rb
index 05c41eed88947841dbef1f0f58383e1ff6917fce..86f7ee7e90bfb44d6ed83eac0fc594fdad7cdbdd 100644
--- a/spec/benchmarks/banzai_benchmark.rb
+++ b/spec/benchmarks/banzai_benchmark.rb
@@ -88,12 +88,18 @@
   def build_filter_text(pipeline, initial_text)
     filter_source = {}
     input_text    = initial_text
+    result        = nil
 
     pipeline.filters.each do |filter_klass|
-      filter_source[filter_klass] = input_text
+      # store inputs for current filter_klass
+      filter_source[filter_klass] = { input_text: input_text, input_result: result }
 
-      output = filter_klass.call(input_text, context)
+      filter = filter_klass.new(input_text, context, result)
+      output = filter.call
+
+      # save these for the next filter_klass
       input_text = output
+      result = filter.result
     end
 
     filter_source
@@ -111,7 +117,12 @@ def benchmark_pipeline_filters(pipeline_type)
       pipeline.filters.each do |filter_klass|
         label = filter_klass.name.demodulize.delete_suffix('Filter').truncate(20)
 
-        x.report(label) { filter_klass.call(filter_source[filter_klass], context) }
+        x.report(label) do
+          filter = filter_klass.new(filter_source[filter_klass][:input_text],
+                                    context,
+                                    filter_source[filter_klass][:input_result])
+          filter.call
+        end
       end
 
       x.compare!