我正在运行一个C++程序,想知道需要多长时间。我可以使用头文件time.h和Windows.h中的内置函数来实现,但我想使用UNIX中的"time“命令。原因是因为我的程序正在将输出重定向到一个750MB的文本文件,而我没有心情打开它。在Windows7中如何做到这一点(DOS提示)。
谢谢
Varun
发布于 2011-05-28 10:14:09
您可以捕获使用echo %TIME%之前和之后的时间,或者有一些用于此目的的免费实用程序。例如,通过此链接查看秒表程序。不幸的是,它的准确度只有一秒,
http://www.jfitz.com/dos/index.html
也可以参考这个类似的问题。这里有一些很好的解决方案,包括一个使用set /A解析echo %TIME%的批处理文件,
发布于 2011-05-28 11:13:50
我使用这个已经有一段时间了(足够长的时间,它最初是为MS-DOS编写的)。它总是将计时输出写入stderr,因此即使标准输出被定向到文件,它也会转到控制台。从理论上讲,你可以把它直接写到一个独立于标准错误的控制台上,但是我从来不需要它,所以我从来没有这样做过。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <process.h>
#include <malloc.h>
#include <string.h>
#if defined(WIN32) || defined(_WIN32)
#include <windows.h>
#else
#include <dos.h>
#endif
int main(void) {
clock_t start, end;
char *cmd;
#ifdef WIN32
char *cmd_line = strdup(GetCommandLine());
#else
char *cmd_line = 0x80;
#endif
int seconds, tenths;
char seps[] = " \r\n\t/";
_heapmin();
strtok(cmd_line, seps);
cmd_line = strtok(NULL, "");
start = clock();
system(cmd_line);
end = clock();
cmd = strtok(cmd_line, seps );
seconds = (end-start) / CLOCKS_PER_SEC;
tenths = (end-start) / ( CLOCKS_PER_SEC / 10 );
tenths -= seconds * 10;
fprintf(stderr, "\n`%s' took %d.%d seconds.\n", cmd, seconds, tenths);
return 0;
}请注意,将结果命名为time.exe不会产生正确的结果(time是内置在shell中的命令,因此它永远不会运行)。我通常将其命名为"timer“。
https://stackoverflow.com/questions/6159217
复制相似问题