回答編集履歴

1

コードの間違いを訂正

2017/12/16 07:01

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

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, *, 0, 8, 16)
115
+ DEFINE(C, c, div, /, 0, 8, 16) // 元は第四引数が/ではなく*になってました
110
-
116
+
111
- DEFINE(S, c, div, *, 0, 8, 16)
117
+ DEFINE(S, c, div, /, 0, 8, 16)
112
-
118
+
113
- DEFINE(I, c, div, *, 0, 8, 16)
119
+ DEFINE(I, c, div, /, 0, 8, 16)
114
-
120
+
115
- DEFINE(L, c, div, *, 0, 8, 16)
121
+ DEFINE(L, c, div, /, 0, 8, 16)
116
-
122
+
117
- DEFINE(F, c, div, *, 0, 8, 16)
123
+ DEFINE(F, c, div, /, 0, 8, 16)
118
-
124
+
119
- DEFINE(D, c, div, *, 0, 8, 16)
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.245 sec ( 0.007) C/c + 0
211
+ 0.241 sec ( 0.008) C/c + 0
206
-
212
+
207
- 0.247 sec ( 0.006) S/c + 0
213
+ 0.248 sec ( 0.006) S/c + 0
208
-
214
+
209
- 0.262 sec ( 0.012) I/c + 0
215
+ 0.269 sec ( 0.011) I/c + 0
210
-
216
+
211
- 0.251 sec ( 0.006) L/c + 0
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.255 sec ( 0.007) D/c + 0
221
+ 0.256 sec ( 0.009) D/c + 0
216
-
222
+
217
- 0.245 sec ( 0.014) C/c * 0
223
+ 0.248 sec ( 0.015) C/c * 0
218
-
224
+
219
- 0.252 sec ( 0.011) S/c * 0
225
+ 0.250 sec ( 0.010) S/c * 0
220
-
226
+
221
- 0.250 sec ( 0.005) I/c * 0
227
+ 0.252 sec ( 0.006) I/c * 0
222
-
228
+
223
- 0.267 sec ( 0.010) L/c * 0
229
+ 0.270 sec ( 0.010) L/c * 0
224
-
230
+
225
- 0.256 sec ( 0.008) F/c * 0
231
+ 0.255 sec ( 0.009) F/c * 0
226
-
232
+
227
- 0.256 sec ( 0.008) D/c * 0
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.245 sec ( 0.012) C/c / 0
243
+ 0.253 sec ( 0.012) F/c / 0
230
-
231
- 0.250 sec ( 0.005) S/c / 0
244
+
232
-
233
- 0.270 sec ( 0.012) I/c / 0
234
-
235
- 0.252 sec ( 0.006) L/c / 0
236
-
237
- 0.263 sec ( 0.007) F/c / 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
  しかし実はメモリーアクセスが遅くてプロセッサーの演算スピードの差が見える前にメモリーアクセスのボトルネックで頭打ちになっているということの方がありそうな気がします。