diff options
author | scivision <scivision@users.noreply.github.com> | 2023-02-15 13:54:02 (GMT) |
---|---|---|
committer | scivision <scivision@users.noreply.github.com> | 2023-02-15 15:53:14 (GMT) |
commit | 848f7b0a81b09ef7fa73e842222e969ecab5e8c2 (patch) | |
tree | 56e12d5517207974b4fbf16539678b18ce0c4d25 /Source/cmcmd.cxx | |
parent | 37f068083ba53e4140e5660a82bda9708e53c356 (diff) | |
download | CMake-848f7b0a81b09ef7fa73e842222e969ecab5e8c2.zip CMake-848f7b0a81b09ef7fa73e842222e969ecab5e8c2.tar.gz CMake-848f7b0a81b09ef7fa73e842222e969ecab5e8c2.tar.bz2 |
cmake -E time: use C++11 chrono and better format output
fixes #24415
Diffstat (limited to 'Source/cmcmd.cxx')
-rw-r--r-- | Source/cmcmd.cxx | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 21d0cc9..d57b78b 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -50,10 +50,10 @@ #endif #include <array> +#include <chrono> #include <cstdio> #include <cstdlib> #include <cstring> -#include <ctime> #include <iostream> #include <memory> #include <sstream> @@ -1104,27 +1104,13 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> const& args, if (args[1] == "time" && args.size() > 2) { std::vector<std::string> command(args.begin() + 2, args.end()); - clock_t clock_start; - clock_t clock_finish; - time_t time_start; - time_t time_finish; - - time(&time_start); - clock_start = clock(); int ret = 0; + auto time_start = std::chrono::steady_clock::now(); cmSystemTools::RunSingleCommand(command, nullptr, nullptr, &ret); + auto time_finish = std::chrono::steady_clock::now(); - clock_finish = clock(); - time(&time_finish); - - double clocks_per_sec = static_cast<double>(CLOCKS_PER_SEC); - std::cout << "Elapsed time: " - << static_cast<long>(time_finish - time_start) << " s. (time)" - << ", " - << static_cast<double>(clock_finish - clock_start) / - clocks_per_sec - << " s. (clock)" - << "\n"; + std::chrono::duration<double> time_elapsed = time_finish - time_start; + std::cout << "Elapsed time (seconds): " << time_elapsed.count() << "\n"; return ret; } |