Merge topic 'cmake-E-time-chrono'

bf5512ef51 Help:cmake -E time: note overhead included
848f7b0a81 cmake -E time: use C++11 chrono and better format output

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8209
This commit is contained in:
Brad King
2023-02-16 16:39:13 +00:00
committed by Kitware Robot
3 changed files with 7 additions and 21 deletions

View File

@@ -1196,7 +1196,7 @@ Available commands are:
.. option:: time <command> [<args>...]
Run command and display elapsed time.
Run ``<command>`` and display elapsed time (including overhead of CMake frontend).
.. versionadded:: 3.5
The command now properly passes arguments with spaces or special characters

View File

@@ -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;
}

View File

@@ -1,3 +1,3 @@
^hello world
Elapsed time: [^
Elapsed time \(seconds\): [^
]*$