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