回答編集履歴
1
追記
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さんの対策が妥当と感じます。
|