diff options
| author | Claudius "keldu" Holeksa <mail@keldu.de> | 2025-11-09 11:41:27 +0100 |
|---|---|---|
| committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2025-11-09 11:41:27 +0100 |
| commit | 98df9bd946bf8f2651c53803b9e2b412b84c8497 (patch) | |
| tree | d6984f2aa525b6f761fc8a9a2e48709024807481 | |
| parent | 16e4e96af8e239e6b3abac59443c70c1d9e757d1 (diff) | |
| download | apps-science_tools-98df9bd946bf8f2651c53803b9e2b412b84c8497.tar.gz | |
Adding duration recordingmain
| -rw-r--r-- | run_and_record/c++/main.cpp | 30 | ||||
| -rw-r--r-- | run_and_record/c++/schema.hpp | 3 |
2 files changed, 22 insertions, 11 deletions
diff --git a/run_and_record/c++/main.cpp b/run_and_record/c++/main.cpp index f1feeb9..c52d5f5 100644 --- a/run_and_record/c++/main.cpp +++ b/run_and_record/c++/main.cpp @@ -246,21 +246,26 @@ saw::error_or<void> kel_main(int argc, char** argv){ return saw::make_error<saw::err::critical>("Command is empty"); } + argc_prog = i - cmd_pos_start; { - cmd_prog = cmd_args.at({0u}); - auto eov = commands.add(std::move(cmd_d)); + argv[i] = 0; + auto start_time = std::chrono::steady_clock::now(); + auto eov = run_program(argc_prog,&argv[cmd_pos_start]); if(eov.is_error()){ return eov; } - cmd_d = {}; + auto stop_time = std::chrono::steady_clock::now(); + auto run_duration = stop_time - start_time; + saw::data<sch::UInt64> dat_run_dur{static_cast<uint64_t>(std::chrono::duration_cast<std::chrono::nanoseconds>(run_duration).count())}; + cmd_d.template get<"duration">() = dat_run_dur; } - argc_prog = i - cmd_pos_start; { - argv[i] = 0; - auto eov = run_program(argc_prog,&argv[cmd_pos_start]); + cmd_prog = cmd_args.at({0u}); + auto eov = commands.add(std::move(cmd_d)); if(eov.is_error()){ return eov; } + cmd_d = {}; } cmd_pos_start = i + 1; }else{ @@ -272,15 +277,20 @@ saw::error_or<void> kel_main(int argc, char** argv){ return saw::make_error<saw::err::critical>("Last command is empty"); } { - cmd_prog = cmd_args.at({0u}); - auto eov = commands.add(std::move(cmd_d)); + argc_prog = argc - cmd_pos_start; + auto start_time = std::chrono::steady_clock::now(); + auto eov = run_program(argc_prog,&argv[cmd_pos_start]); if(eov.is_error()){ return eov; } + auto stop_time = std::chrono::steady_clock::now(); + auto run_duration = stop_time - start_time; + saw::data<sch::UInt64> dat_run_dur{static_cast<uint64_t>(std::chrono::duration_cast<std::chrono::nanoseconds>(run_duration).count())}; + cmd_d.template get<"duration">() = dat_run_dur; } { - argc_prog = argc - cmd_pos_start; - auto eov = run_program(argc_prog,&argv[cmd_pos_start]); + cmd_prog = cmd_args.at({0u}); + auto eov = commands.add(std::move(cmd_d)); if(eov.is_error()){ return eov; } diff --git a/run_and_record/c++/schema.hpp b/run_and_record/c++/schema.hpp index 87405ef..8994e97 100644 --- a/run_and_record/c++/schema.hpp +++ b/run_and_record/c++/schema.hpp @@ -27,7 +27,8 @@ using RarEnv = Array<String>; using RarCommand = Struct< Member<String, "program">, - Member<Array<String>, "arguments"> + Member<Array<String>, "arguments">, + Member<UInt64, "duration"> >; using RarFileData = Struct< |
