diff --git a/bin/benchmark/bench.hpp b/bin/benchmark/bench.hpp
index 3b882f2809459c056604d868dbbf6adf0ab6e48f..db5af6942c5ad4a092a55a1dac91bb88866997f9 100644
--- a/bin/benchmark/bench.hpp
+++ b/bin/benchmark/bench.hpp
@@ -346,17 +346,17 @@ int run(BenchParameters & benchParameter)
   }
   tinit->Pause();
 
+  if(benchParameter.verbose) printf("Create plan and init GPU\n");
+  // Create a dedispersion plan
+  tplan->Start();
+  PlanType plan(nchans, dt, f0, df, device_idx);
+  tplan->Pause();
+
   for(int iPlan = 0; iPlan < benchParameter.niterations; iPlan++)
   {
-    tplan->Start();
-
     printf("\n");
     printf("------------------------- ITERATION %d out of %d  -------------------------\n", iPlan+1, benchParameter.niterations);
 
-    if(benchParameter.verbose) printf("Create plan and init GPU\n");
-    // Create a dedispersion plan
-    PlanType plan(nchans, dt, f0, df, device_idx);
-
     if(benchParameter.verbose) printf("Gen DM list\n");
     // Generate a list of dispersion measures for the plan
     if (dm_count==0)
@@ -391,7 +391,6 @@ int run(BenchParameters & benchParameter)
       printf("\n");
     }
 
-    tplan->Pause();
     texecute->Start();
 
     printf("\n");