@@ -41,8 +41,12 @@ Rcpp::List run_smc(
4141 int T = data->n_timepoints ();
4242 vec ESS (T);
4343 ivec resampling = zeros<ivec>(T);
44+
45+ std::vector<double > iteration_times;
46+
4447 for (size_t t{}; t < T; t++) {
4548 reporter.report_time (t);
49+ auto start = std::chrono::steady_clock::now ();
4650
4751 for (auto & p : particle_vector) {
4852 p.run_particle_filter (t, prior, data, pfun, distfun, resampler,
@@ -110,6 +114,10 @@ Rcpp::List run_smc(
110114
111115 tracer.update_trace (particle_vector, t);
112116 n_particle_filters (t) = options.n_particle_filters ;
117+
118+ auto end = std::chrono::steady_clock::now ();
119+ auto duration = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start).count ();
120+ iteration_times.push_back (static_cast <double >(duration));
113121 }
114122
115123 mat alpha (prior.n_clusters , particle_vector.size ());
@@ -138,6 +146,7 @@ Rcpp::List run_smc(
138146 Rcpp::Named (" ESS" ) = ESS,
139147 Rcpp::Named (" resampling" ) = resampling,
140148 Rcpp::Named (" n_particle_filters" ) = n_particle_filters,
149+ Rcpp::Named (" iteration_times" ) = iteration_times,
141150 Rcpp::Named (" importance_weights" ) = exp (normalize_log_importance_weights (particle_vector)),
142151 Rcpp::Named (" log_marginal_likelihood" ) = log_marginal_likelihood,
143152 Rcpp::Named (" alpha_traces" ) = tracer.alpha_traces ,
0 commit comments