This commit is contained in:
2025-07-24 17:31:48 +08:00
parent 8423da7ddc
commit dcf1f324ce
6 changed files with 118 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
import example
matrix = [[1, 2], [3, 4]]
print(example.sum_matrix(matrix))
print('---')
# 时间对比
import numpy as np
import time
matrix = np.random.rand(5000, 5000)
start = time.time()
print(example.sum_matrix(matrix))
end = time.time()
print('Python + Fortran 循环求和时间:', end - start)
start = time.time()
sum_result = 0
for i0 in range(matrix.shape[0]):
for j0 in range(matrix.shape[1]):
sum_result += matrix[i0, j0]
print(sum_result)
end = time.time()
print('Python 循环求和时间:', end - start)
from numba import jit
@jit
def numba_for_sum_matrix(matrix):
sum_result = 0
for i0 in range(matrix.shape[0]):
for j0 in range(matrix.shape[1]):
sum_result += matrix[i0, j0]
return sum_result
start = time.time()
print(numba_for_sum_matrix(matrix))
end = time.time()
print('Python numba 循环求和时间:', end - start)
start = time.time()
print(np.sum(matrix))
end = time.time()
print('Python numpy.sum() 求和时间:', end - start)

View File

@@ -0,0 +1,17 @@
subroutine sum_matrix(matrix, total)
implicit none
! 输入参数
real, intent(in) :: matrix(:,:) ! 假定形状数组
real, intent(out) :: total ! 输出总和
! 局部变量
integer :: i, j
! 双重循环计算总和
total = 0.0
do j = 1, size(matrix, 2) ! 获取列数
do i = 1, size(matrix, 1) ! 获取行数
total = total + matrix(i, j)
end do
end do
end subroutine sum_matrix