update
This commit is contained in:
23
2025.07.28_programming_with_cython/a.py
Normal file
23
2025.07.28_programming_with_cython/a.py
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import example
|
||||||
|
import time
|
||||||
|
|
||||||
|
def py_calculate(n):
|
||||||
|
result = 0
|
||||||
|
for i in range(n):
|
||||||
|
result += i
|
||||||
|
return result
|
||||||
|
|
||||||
|
n = 10**8
|
||||||
|
|
||||||
|
start = time.time()
|
||||||
|
py_result = py_calculate(n)
|
||||||
|
print(py_result)
|
||||||
|
py_time = time.time() - start
|
||||||
|
|
||||||
|
start = time.time()
|
||||||
|
cy_result = example.calculate(n)
|
||||||
|
print(cy_result)
|
||||||
|
cy_time = time.time() - start
|
||||||
|
|
||||||
|
print(f"Python 版本: {py_time:.6f} 秒")
|
||||||
|
print(f"Cython 版本: {cy_time:.6f} 秒")
|
11
2025.07.28_programming_with_cython/example.pyx
Normal file
11
2025.07.28_programming_with_cython/example.pyx
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
def calculate(int n):
|
||||||
|
cdef int i
|
||||||
|
|
||||||
|
cdef long long result = 0
|
||||||
|
# cdef int result = 0 # 这个类型在数值比较大的时候会溢出,结果不正确。
|
||||||
|
# result = 0 # 这个不声明类型,使用 Python 的 int,Python 的整数是任意精度的,不会溢出,但性能会比 C 类型低。
|
||||||
|
|
||||||
|
for i in range(n):
|
||||||
|
result += i
|
||||||
|
|
||||||
|
return result
|
4
2025.07.28_programming_with_cython/setup.py
Normal file
4
2025.07.28_programming_with_cython/setup.py
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
from distutils.core import setup
|
||||||
|
from Cython.Build import cythonize
|
||||||
|
|
||||||
|
setup(ext_modules=cythonize("example.pyx"))
|
Reference in New Issue
Block a user