teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

誤情報の訂正

2017/12/07 07:57

投稿

a_saitoh
a_saitoh

スコア702

answer CHANGED
@@ -2,4 +2,17 @@
2
2
  Linuxはscanfの入力待ちでは一切CPUは使いません。
3
3
  キー入力と入力しつつある文字の表示とかの処理はGUIシステム側のCPU消費とか、OSの割り込み処理のCPU消費としてカウントされてると思います。
4
4
 
5
- Windowsはscanfを呼び出したプログラム自身が結構CPUを使っちゃってるようですね。
5
+ Windowsはscanfを呼び出したプログラム自身が結構CPUを使っちゃってるようですね。
6
+
7
+ 追記:
8
+ 間違いでした。
9
+
10
+ Linux glibc 2.18 以降のclockはは、 精度を向上させるため、 clock_gettime(2) (の CLOCK_PROCESS_CPUTIME_ID クロック) を使って実装されていいます。以前はtimes()を使ってましたがどっちにしても消費したCPU時間をはかっています。
11
+
12
+ 一方Winowsのclockはwall-clock timeを返す関数(時刻がわかるので差し引きすると経過時間が出る)で「ISO Cと互換性がない」と書かれています。
13
+ https://msdn.microsoft.com/en-us/library/4e2ess30.aspx
14
+
15
+ そもそも違うものを計っていたと言うことです。
16
+
17
+ おそらくは、Win321piのGetProcessTimesを使うとかするぼが正解。
18
+ C++プログラミングがしたいのならすでに他の方が答えているstd::chrono::high_resolution_clock::now()関数が正解なのでしょう。