2011-05-28 6 views
1

私はC++プログラムを実行しており、どれくらいの時間がかかるかを知りたいと思っています。ヘッダファイルtime.hとWindows.hに組み込まれている関数を使って実行できますが、UNIXでは "time"コマンドのようなものを使いたいと思います。理由は、私のプログラムが出力を750 MBのテキストファイルにリダイレクトしていて、それを開こうとする気分がないからです。どのようにWindows 7(DOSプロンプト)で行うことができます。タイミングプロセス(Windows 7のDOSプロンプト)

VARUN

答えて

1

おかげであなたは前とecho %TIME%を使用した後の時間をキャプチャすることができ、またはこの目的のためにいくつかの無料のユーティリティがあります。たとえば、このリンクからストップウォッチプログラムをチェックしてください。それが唯一の二までの精度を持っている、残念ながら、

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

はまた、この類似した質問を参照してください。 echo %TIME%を解析するためにset /Aを使用してバッチファイルを含め、ここでいくつかの良い解決策はありますが、

Print time in a batch file (milliseconds)

+0

助けてくれてありがとう。 – Varun

1

私は(それはもともと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がシェルに組み込まれたコマンドであるので、それを実行することは決してないだろう)、正しい結果が得られないことに注意してください。私は通常、代わりに "タイマー"という名前を付けます。

関連する問題