78 lines
1.8 KiB
Python
78 lines
1.8 KiB
Python
from numba import jit
|
||
import numpy as np
|
||
import time
|
||
|
||
numpy_array = np.arange(0,1e5,1)
|
||
times = 1000
|
||
|
||
def for_sum(numpy_array):
|
||
sum = 0
|
||
for number in numpy_array:
|
||
sum += number
|
||
return sum
|
||
|
||
start = time.time()
|
||
for _ in range(times):
|
||
result = for_sum(numpy_array)
|
||
end = time.time()
|
||
print('for循环求和时间:', end - start)
|
||
|
||
start = time.time()
|
||
for _ in range(times):
|
||
result = sum(numpy_array)
|
||
end = time.time()
|
||
print('sum()函数求和时间:', end - start)
|
||
|
||
start = time.time()
|
||
for _ in range(times):
|
||
result = np.sum(numpy_array)
|
||
end = time.time()
|
||
print('numpy.sum()函数求和时间:', end - start)
|
||
|
||
print()
|
||
|
||
@jit
|
||
def numba_for_sum(numpy_array):
|
||
sum = 0
|
||
for number in numpy_array:
|
||
sum += number
|
||
return sum
|
||
|
||
@jit
|
||
def numba_np_sum(numpy_array):
|
||
result = np.sum(numpy_array)
|
||
return result
|
||
|
||
@jit(nopython=True)
|
||
def numba_nopython_np_sum(numpy_array):
|
||
result = np.sum(numpy_array)
|
||
return result
|
||
|
||
@jit(nopython=True, parallel=True)
|
||
def numba_nopython_parallel_np_sum(numpy_array):
|
||
result = np.sum(numpy_array)
|
||
return result
|
||
|
||
start = time.time()
|
||
for _ in range(times):
|
||
result = numba_for_sum(numpy_array)
|
||
end = time.time()
|
||
print('numba + for循环求和时间:', end - start)
|
||
|
||
start = time.time()
|
||
for _ in range(times):
|
||
result = numba_np_sum(numpy_array)
|
||
end = time.time()
|
||
print('numba + numpy.sum()函数求和时间:', end - start)
|
||
|
||
start = time.time()
|
||
for _ in range(times):
|
||
result = numba_nopython_np_sum(numpy_array)
|
||
end = time.time()
|
||
print('numba(nopython) + numpy.sum()函数求和时间:', end - start)
|
||
|
||
start = time.time()
|
||
for _ in range(times):
|
||
result = numba_nopython_parallel_np_sum(numpy_array)
|
||
end = time.time()
|
||
print('numba(nopython,parallel) + numpy.sum()函数求和时间:', end - start) |