Я написал следующие программы, чтобы сравнить скорость python с c / fortran. Чтобы узнать время, используемое программами, я использовал команду «time». Все программы вычисляют квадратный корень из x x + y y + 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
C:
#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)