diff --git a/examples/portable/executor_runner/executor_runner.cpp b/examples/portable/executor_runner/executor_runner.cpp index 08907d333c4..7c75c39f0a9 100644 --- a/examples/portable/executor_runner/executor_runner.cpp +++ b/examples/portable/executor_runner/executor_runner.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #ifdef ET_EVENT_TRACER_ENABLED #include @@ -249,6 +250,7 @@ int main(int argc, char** argv) { (uint32_t)method.error()); ET_LOG(Info, "Method loaded."); + et_timestamp_t time_spent_executing = 0; // Run the model. for (uint32_t i = 0; i < FLAGS_num_executions; i++) { ET_LOG(Debug, "Preparing inputs."); @@ -267,17 +269,24 @@ int main(int argc, char** argv) { (uint32_t)inputs.error()); ET_LOG(Debug, "Inputs prepared."); + const et_timestamp_t before_execute = et_pal_current_ticks(); Error status = method->execute(); + const et_timestamp_t after_execute = et_pal_current_ticks(); + time_spent_executing += after_execute - before_execute; ET_CHECK_MSG( status == Error::Ok, "Execution of method %s failed with status 0x%" PRIx32, method_name, (uint32_t)status); } + const auto tick_ratio = et_pal_ticks_to_ns_multiplier(); + constexpr auto NANOSECONDS_PER_MILLISECOND = 1000000; ET_LOG( Info, - "Model executed successfully %" PRIu32 " time(s).", - FLAGS_num_executions); + "Model executed successfully %" PRIu32 " time(s) in %f ms.", + FLAGS_num_executions, + static_cast(time_spent_executing) * tick_ratio.numerator / + tick_ratio.denominator / NANOSECONDS_PER_MILLISECOND); // Print the outputs. std::vector outputs(method->outputs_size());