homework1.cにプログラムを書きました。
i-j-k, i-k-j, j-i-k, j-k-i, k-i-j, k-j-i
メモリへのアクセスが連続するか連続しないかを元に考えました。
- 長い順で上から書いていきます
- i-j-k, j-i-k
- i-k-j, k-i-j
- j-k-i, k-j-i
2回試してみました。コンパイル時にはオプションをつけていません。
i-j-k | i-k-j | j-i-k | j-k-i | k-i-j | k-j-i |
---|---|---|---|---|---|
32 | 4 | 3 | 2 | 3 | 2 |
30 | 3 | 3 | 1 | 2 | 2 |
予想した結果と大差なかったです。なのでメモリへのアクセスが連続するか連続しないかは実行速度に影響する事がわかりました。
pythonはインタープリタ方式、C言語ははコンパイル方式だからだと思いました。
コンパイラと比較してインタプリタは最適化と機械語生成が無いので、最適化と機械語生成が影響しているのだと思いました。