回答編集履歴
1
説明追加
answer
CHANGED
@@ -13,4 +13,9 @@
|
|
13
13
|
>>> flat = shape[0]*shape[1]
|
14
14
|
>>> print((A.reshape(flat)*B.reshape(flat)).reshape(shape).sum(axis=1))
|
15
15
|
[ 23 67 127]
|
16
|
-
```
|
16
|
+
```
|
17
|
+
|
18
|
+
numpy関数は計算時間に比べて呼び出しオーバーヘッドが大きいので、呼び出し回数を減らすことが性能向上のカギです。
|
19
|
+
|
20
|
+
このサイズだと、@の繰り返しだと3回でここに書いたプログラムは4回になりますのが、SIMD長は
|
21
|
+
@方式が短いので、おそらく同程度の性能です。サイズが大きくなると、こちらのやり方の方は常に呼び出し4回でSIMD長がながくなり、@方式は呼び出し回数が増えていきますのでこちらの方が高速になっていきます。
|