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

回答編集履歴

1

説明追加

2021/03/05 01:34

投稿

ppaul
ppaul

スコア24672

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長がながくなり、@方式は呼び出し回数が増えていきますのでこちらの方が高速になっていきます。