mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-09 07:11:05 -06:00
Merge topic 'cmake-E-time-chrono'
bf5512ef51Help:cmake -E time: note overhead included848f7b0a81cmake -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:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
^hello world
|
||||
Elapsed time: [^
|
||||
Elapsed time \(seconds\): [^
|
||||
]*$
|
||||
|
||||
Reference in New Issue
Block a user