Я написал следующие программы, чтобы сравнить скорость python с c/fortran. Чтобы получить время, используемое программами, я использовал команду "время". Все программы вычисляют квадратный корень из xx + yy + z * z, где x, y, z - поплавки. Я использовал квадрат корня, потому что это одна из самых трудоемких частей в научными вычислениями, в которых я участвую.
Я получил следующие моменты:
fortran 0m29.9s //
c 0m20.7s //
python 30m10.8s
В соответствии с простым тестом я обнаружил, что Python не рекомендуется для научных вычислений. Но, вероятно, мой код очень неэффективен.
Как вы думаете, я мог бы сделать мой код более эффективным только для этого простого теста?
Fortran:
program root_square
implicit none
integer i,j
real x,y,z,r
x=1.0
y=2.0
z=3.0
do j=1,3000
do i=1,1000000
r=sqrt(x*x+y*y+z*z)
enddo
enddo
end program root_square
С
#include "stdio.h"
#include "math.h"
int main (void)
{
float x=1.0,y=2.0,z=3.0,r;
int i,j;
for(j=0; j<3000; j++){
for(i=0; i<1000000; i++) {
r=sqrt(x*x+y*y+z*z);
}
}
return 0;
}
Python:
#!/usr/bin/env python
from math import sqrt
x = 1.0
y = 2.0
z = 3.0
for j in range(1,3001):
for i in range(1,1000001):
r = sqrt(x*x+y*y+z*z)