首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为进程计时(Windows 7 DOS提示符)

为进程计时(Windows 7 DOS提示符)
EN

Stack Overflow用户
提问于 2011-05-28 09:59:55
回答 2查看 638关注 0票数 1

我正在运行一个C++程序,想知道需要多长时间。我可以使用头文件time.h和Windows.h中的内置函数来实现,但我想使用UNIX中的"time“命令。原因是因为我的程序正在将输出重定向到一个750MB的文本文件,而我没有心情打开它。在Windows7中如何做到这一点(DOS提示)。

谢谢

Varun

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-28 10:14:09

您可以捕获使用echo %TIME%之前和之后的时间,或者有一些用于此目的的免费实用程序。例如,通过此链接查看秒表程序。不幸的是,它的准确度只有一秒,

http://www.jfitz.com/dos/index.html

也可以参考这个类似的问题。这里有一些很好的解决方案,包括一个使用set /A解析echo %TIME%的批处理文件,

Print time in a batch file (milliseconds)

票数 1
EN

Stack Overflow用户

发布于 2011-05-28 11:13:50

我使用这个已经有一段时间了(足够长的时间,它最初是为MS-DOS编写的)。它总是将计时输出写入stderr,因此即使标准输出被定向到文件,它也会转到控制台。从理论上讲,你可以把它直接写到一个独立于标准错误的控制台上,但是我从来不需要它,所以我从来没有这样做过。

代码语言:javascript
复制
#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“。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6159217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档