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

回答編集履歴

1

追記

2016/01/12 02:38

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -4,4 +4,20 @@
4
4
  もちろん、小数点以下が常に0になります。
5
5
  `(double)((end - start)/CLOCKS_PER_SEC)`では除算も整数型のまま行われるため、小数点以下は切り捨てられます。ozwkさんの回答のように変更すると小数点以下の値も表示されます。
6
6
 
7
- なぜ、FumiakiNakaoさんの環境では常に0.0秒のままなのか分かりませんが、環境の問題の可能性がありそうです。start、end、CLOCKS_PER_SECの値を直接printfされてみれば何か判るかも知れません。
7
+ なぜ、FumiakiNakaoさんの環境では常に0.0秒のままなのか分かりませんが、環境の問題の可能性がありそうです。start、end、CLOCKS_PER_SECの値を直接printfされてみれば何か判るかも知れません。
8
+
9
+ ---
10
+ 【追記】
11
+
12
+ ozwkさんの下記を見て調べてみました。
13
+
14
+ > UNIX系だと IO処理はclock()の経過時間に含まれないようです。
15
+
16
+ http://man7.org/linux/man-pages/man3/clock.3.html
17
+ http://www.cplusplus.com/reference/ctime/clock/
18
+ を見るとプログラムが使ったプロセッサ時間と記載されてます。経過時間ではないのですね。
19
+
20
+ Windowsでは下記のように記載されているので、マイクロソフトは規格とは異なる実装をしているようです。
21
+ https://msdn.microsoft.com/ja-jp/library/4e2ess30.aspx
22
+
23
+ ということは、catsforepawさんの対策が妥当と感じます。