1

次のコードを検討してください (Julia)

bar(x) = for i = 1:9999 x+x*x-x+x end # Define the "bar" function
print("First try: "); @time bar(0.5)
print("Second try: "); @time bar(0.5)
bar(x) = for i = 1:9999 x+x*x-x+x end # Redefine the same "bar" function
print("Third try: "); @time bar(0.5)
print("Fourth try: "); @time bar(0.6)

出力は

First try: elapsed time: 0.002738996 seconds (88152 bytes allocated)
Second try: elapsed time: 3.827e-6 seconds (80 bytes allocated)
Third try: elapsed time: 0.002907554 seconds (88152 bytes allocated)
Fourth try: elapsed time: 2.395e-6 seconds (80 bytes allocated)

2 回目 (および 4 回目) の試行が、1 回目 (および 3 回目) の試行よりもはるかに高速である (およびメモリ使用量が少ない) のはなぜですか?

4

2 に答える 2

3

Julia にはジャストインタイム コンパイラがあることは理解しています。したがって、1 回目 (および 3 回目) の実行ではコードがコンパイルされ (そのために必要な割り当てが行われます)、2 回目 (および 4 回目) の実行では以前にコンパイルされたコードが実行されます。

于 2015-01-02T16:31:10.830 に答える