処理系ごとの計算所要時間(n は 外側の for ループの 10^n の n)
n = 0 n = 1 n = 2 n = 3
numba 0.783 1.62 16.9 167
Julia 0.194 1.833 17.531 174.838
Fortran 0.866 8.638 97.865 ---
Java 2.298 25.903 249.377 ---
R 52.671 555.271 ---
Python 229.654 2794.784 ---
- numba と Julia はいい勝負
- Julia は Fortran より速い
- Python おそっ!
プログラム
numba
from numba import jit
@jit
def hoge(n):
count = 0
i = 0
for k0 in range(10**n):
for k in range(10**9):
i += 1
if i >= 1000:
count += 1
return count
julia
function hoge(n)
count = 0
i = 0
for k0 = 1:10^n
for k = 1:10^9
i += 1
if i >= 1000
count += 1
end
end
end
count
end
Fortran
program main
implicit none
integer(8) n, i, k, k0, count
n = 0
count = 0
i = 0
do k0 = 1, 10**n
do k = 1, 10**9
i = i+1
if (i >= 1000) then
count = count + 1
end if
end do
end do
write(*,*) n, count
end program main
Java
package hoge;
public class hogehoge {
public static void main(String[] args) {
long n, i, k, k0, count;
long startTime = System.currentTimeMillis();
n = 2;
count = 0;
i = 0;
for (k0 = 1; k0 <= Math.pow(10, n); k0++) {
for (k = 1; k <= Math.pow(10, 9); k++) {
i += 1;
if (i >= 1000) {
count += 1;
}
}
}
System.out.println(n+", "+count);
long endTime = System.currentTimeMillis();
System.out.println("処理時間:" + (endTime - startTime) + " ms");
}
}
R
hoge = function(n) {
count = 0
i = 0
for (k0 in 1:10^n) {
for (k in 1:10^9) {
i = i+1
if (i >= 1000) {
count = count + 1
}
}
}
count
}
Python
def hoge(n):
count = 0
i = 0
for k0 in range(10**n):
for k in range(10**9):
i += 1
if i >= 1000:
count += 1
return count
※コメント投稿者のブログIDはブログ作成者のみに通知されます