回答編集履歴
1
コードの間違いを訂正
test
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
訂正:スミマセン!除算のコードが間違って乗算になってました。コードと測定結果を訂正いたします。
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
---
|
6
|
+
|
1
7
|
回答にはならないのですが、64bitのPCのプロセッサの性能を試したときに驚いた結果(おじさんなもので驚いたといった方がいいのかも知れませんが)をご紹介してみようと思います。
|
2
8
|
|
3
9
|
|
@@ -106,17 +112,17 @@
|
|
106
112
|
|
107
113
|
|
108
114
|
|
109
|
-
DEFINE(C, c, div,
|
115
|
+
DEFINE(C, c, div, /, 0, 8, 16) // 元は第四引数が/ではなく*になってました
|
110
|
-
|
116
|
+
|
111
|
-
DEFINE(S, c, div,
|
117
|
+
DEFINE(S, c, div, /, 0, 8, 16)
|
112
|
-
|
118
|
+
|
113
|
-
DEFINE(I, c, div,
|
119
|
+
DEFINE(I, c, div, /, 0, 8, 16)
|
114
|
-
|
120
|
+
|
115
|
-
DEFINE(L, c, div,
|
121
|
+
DEFINE(L, c, div, /, 0, 8, 16)
|
116
|
-
|
122
|
+
|
117
|
-
DEFINE(F, c, div,
|
123
|
+
DEFINE(F, c, div, /, 0, 8, 16)
|
118
|
-
|
124
|
+
|
119
|
-
DEFINE(D, c, div,
|
125
|
+
DEFINE(D, c, div, /, 0, 8, 16)
|
120
126
|
|
121
127
|
|
122
128
|
|
@@ -202,41 +208,41 @@
|
|
202
208
|
|
203
209
|
```text
|
204
210
|
|
205
|
-
0.24
|
211
|
+
0.241 sec ( 0.008) C/c + 0
|
206
|
-
|
212
|
+
|
207
|
-
0.24
|
213
|
+
0.248 sec ( 0.006) S/c + 0
|
208
|
-
|
214
|
+
|
209
|
-
0.26
|
215
|
+
0.269 sec ( 0.011) I/c + 0
|
210
|
-
|
216
|
+
|
211
|
-
0.25
|
217
|
+
0.250 sec ( 0.000) L/c + 0
|
212
218
|
|
213
219
|
0.263 sec ( 0.006) F/c + 0
|
214
220
|
|
215
|
-
0.25
|
221
|
+
0.256 sec ( 0.009) D/c + 0
|
216
|
-
|
222
|
+
|
217
|
-
0.24
|
223
|
+
0.248 sec ( 0.015) C/c * 0
|
218
|
-
|
224
|
+
|
219
|
-
0.25
|
225
|
+
0.250 sec ( 0.010) S/c * 0
|
220
|
-
|
226
|
+
|
221
|
-
0.25
|
227
|
+
0.252 sec ( 0.006) I/c * 0
|
222
|
-
|
228
|
+
|
223
|
-
0.2
|
229
|
+
0.270 sec ( 0.010) L/c * 0
|
224
|
-
|
230
|
+
|
225
|
-
0.25
|
231
|
+
0.255 sec ( 0.009) F/c * 0
|
226
|
-
|
232
|
+
|
227
|
-
0.25
|
233
|
+
0.259 sec ( 0.008) D/c * 0
|
234
|
+
|
228
|
-
|
235
|
+
0.394 sec ( 0.012) C/c / 0 //元のコードでは乗算の性能になってました。除算はやはり少し遅いw
|
236
|
+
|
237
|
+
0.431 sec ( 0.008) S/c / 0
|
238
|
+
|
239
|
+
0.384 sec ( 0.010) I/c / 0
|
240
|
+
|
241
|
+
0.398 sec ( 0.029) L/c / 0
|
242
|
+
|
229
|
-
0.2
|
243
|
+
0.253 sec ( 0.012) F/c / 0
|
230
|
-
|
231
|
-
|
244
|
+
|
232
|
-
|
233
|
-
0.270 sec ( 0.012) I/c / 0
|
234
|
-
|
235
|
-
0.252 sec ( 0.006) L/c / 0
|
236
|
-
|
237
|
-
0.
|
245
|
+
0.381 sec ( 0.007) D/c / 0
|
238
|
-
|
239
|
-
0.254 sec ( 0.008) D/c / 0
|
240
246
|
|
241
247
|
```
|
242
248
|
|
@@ -284,6 +290,8 @@
|
|
284
290
|
|
285
291
|
- 加算や乗算や除算の機械語命令は必要クロック数が異なる気がするが差が見えない
|
286
292
|
|
293
|
+
(訂正:間違って除算でなく乗算になってしまた!除算に訂正したところ加算・乗算より除算が遅い結果になりました。除算が遅いという結果になった方がむしろ自分には自然に思えました!)
|
294
|
+
|
287
295
|
|
288
296
|
|
289
297
|
しかし実はメモリーアクセスが遅くてプロセッサーの演算スピードの差が見える前にメモリーアクセスのボトルネックで頭打ちになっているということの方がありそうな気がします。
|