diff options
Diffstat (limited to 'docs/examples/tutorial/profiling_tutorial')
11 files changed, 123 insertions, 80 deletions
diff --git a/docs/examples/tutorial/profiling_tutorial/calc_pi.py b/docs/examples/tutorial/profiling_tutorial/calc_pi.py index bc265e560..3775eb816 100644 --- a/docs/examples/tutorial/profiling_tutorial/calc_pi.py +++ b/docs/examples/tutorial/profiling_tutorial/calc_pi.py @@ -1,10 +1,8 @@ -# calc_pi.py
-
-def recip_square(i):
- return 1. / i ** 2
-
-def approx_pi(n=10000000):
- val = 0.
- for k in range(1, n + 1):
- val += recip_square(k)
- return (6 * val) ** .5
+def recip_square(i): + return 1. / i ** 2 + +def approx_pi(n=10000000): + val = 0. + for k in range(1, n + 1): + val += recip_square(k) + return (6 * val) ** .5 diff --git a/docs/examples/tutorial/profiling_tutorial/calc_pi_2.py b/docs/examples/tutorial/profiling_tutorial/calc_pi_2.py new file mode 100644 index 000000000..b05eeedb5 --- /dev/null +++ b/docs/examples/tutorial/profiling_tutorial/calc_pi_2.py @@ -0,0 +1,12 @@ +# cython: profile=True +import cython + +def recip_square(i: cython.longlong): + return 1. / i ** 2 + +def approx_pi(n: cython.int = 10000000): + val: cython.double = 0. + k: cython.int + for k in range(1, n + 1): + val += recip_square(k) + return (6 * val) ** .5 diff --git a/docs/examples/tutorial/profiling_tutorial/calc_pi_2.pyx b/docs/examples/tutorial/profiling_tutorial/calc_pi_2.pyx index dab8d238d..485bbabf8 100644 --- a/docs/examples/tutorial/profiling_tutorial/calc_pi_2.pyx +++ b/docs/examples/tutorial/profiling_tutorial/calc_pi_2.pyx @@ -1,13 +1,11 @@ -# cython: profile=True
-
-# calc_pi.pyx
-
-def recip_square(int i):
- return 1. / i ** 2
-
-def approx_pi(int n=10000000):
- cdef double val = 0.
- cdef int k
- for k in range(1, n + 1):
- val += recip_square(k)
- return (6 * val) ** .5
+# cython: profile=True + +def recip_square(int i): + return 1. / i ** 2 + +def approx_pi(int n=10000000): + cdef double val = 0. + cdef int k + for k in range(1, n + 1): + val += recip_square(k) + return (6 * val) ** .5 diff --git a/docs/examples/tutorial/profiling_tutorial/calc_pi_3.py b/docs/examples/tutorial/profiling_tutorial/calc_pi_3.py new file mode 100644 index 000000000..df3dfa3a1 --- /dev/null +++ b/docs/examples/tutorial/profiling_tutorial/calc_pi_3.py @@ -0,0 +1,15 @@ +# cython: profile=True +import cython + +@cython.cfunc +@cython.inline +@cython.exceptval(-1.0) +def recip_square(i: cython.longlong) -> cython.double: + return 1. / (i * i) + +def approx_pi(n: cython.int = 10000000): + val: cython.double = 0. + k: cython.int + for k in range(1, n + 1): + val += recip_square(k) + return (6 * val) ** .5 diff --git a/docs/examples/tutorial/profiling_tutorial/calc_pi_3.pyx b/docs/examples/tutorial/profiling_tutorial/calc_pi_3.pyx index 0f0bdb18a..742991b1a 100644 --- a/docs/examples/tutorial/profiling_tutorial/calc_pi_3.pyx +++ b/docs/examples/tutorial/profiling_tutorial/calc_pi_3.pyx @@ -1,13 +1,14 @@ -# cython: profile=True
-
-# calc_pi.pyx
-
-cdef inline double recip_square(int i):
- return 1. / (i * i)
-
-def approx_pi(int n=10000000):
- cdef double val = 0.
- cdef int k
- for k in range(1, n + 1):
- val += recip_square(k)
- return (6 * val) ** .5
+# cython: profile=True + + + + +cdef inline double recip_square(long long i) except -1.0: + return 1. / (i * i) + +def approx_pi(int n=10000000): + cdef double val = 0. + cdef int k + for k in range(1, n + 1): + val += recip_square(k) + return (6 * val) ** .5 diff --git a/docs/examples/tutorial/profiling_tutorial/calc_pi_4.py b/docs/examples/tutorial/profiling_tutorial/calc_pi_4.py new file mode 100644 index 000000000..b457cd99d --- /dev/null +++ b/docs/examples/tutorial/profiling_tutorial/calc_pi_4.py @@ -0,0 +1,17 @@ +# cython: profile=True + +import cython + +@cython.profile(False) +@cython.cfunc +@cython.inline +@cython.exceptval(-1.0) +def recip_square(i: cython.longlong) -> float: + return 1. / (i * i) + +def approx_pi(n: cython.int = 10000000): + val: cython.double = 0. + k: cython.int + for k in range(1, n + 1): + val += recip_square(k) + return (6 * val) ** .5 diff --git a/docs/examples/tutorial/profiling_tutorial/calc_pi_4.pyx b/docs/examples/tutorial/profiling_tutorial/calc_pi_4.pyx index ab3f9ea9f..415ac4a22 100644 --- a/docs/examples/tutorial/profiling_tutorial/calc_pi_4.pyx +++ b/docs/examples/tutorial/profiling_tutorial/calc_pi_4.pyx @@ -1,16 +1,17 @@ -# cython: profile=True
-
-# calc_pi.pyx
-
-cimport cython
-
-@cython.profile(False)
-cdef inline double recip_square(int i):
- return 1. / (i * i)
-
-def approx_pi(int n=10000000):
- cdef double val = 0.
- cdef int k
- for k in range(1, n + 1):
- val += recip_square(k)
- return (6 * val) ** .5
+# cython: profile=True + +cimport cython + + + + +@cython.profile(False) +cdef inline double recip_square(long long i) except -1.0: + return 1. / (i * i) + +def approx_pi(int n=10000000): + cdef double val = 0. + cdef int k + for k in range(1, n + 1): + val += recip_square(k) + return (6 * val) ** .5 diff --git a/docs/examples/tutorial/profiling_tutorial/often_called.py b/docs/examples/tutorial/profiling_tutorial/often_called.py new file mode 100644 index 000000000..15197cb97 --- /dev/null +++ b/docs/examples/tutorial/profiling_tutorial/often_called.py @@ -0,0 +1,5 @@ +import cython + +@cython.profile(False) +def my_often_called_function(): + pass diff --git a/docs/examples/tutorial/profiling_tutorial/often_called.pyx b/docs/examples/tutorial/profiling_tutorial/often_called.pyx index 77c689c9c..3699dce4f 100644 --- a/docs/examples/tutorial/profiling_tutorial/often_called.pyx +++ b/docs/examples/tutorial/profiling_tutorial/often_called.pyx @@ -1,5 +1,5 @@ -cimport cython
-
-@cython.profile(False)
-def my_often_called_function():
- pass
+cimport cython + +@cython.profile(False) +def my_often_called_function(): + pass diff --git a/docs/examples/tutorial/profiling_tutorial/profile.py b/docs/examples/tutorial/profiling_tutorial/profile.py index 1c12bf971..c0b76472a 100644 --- a/docs/examples/tutorial/profiling_tutorial/profile.py +++ b/docs/examples/tutorial/profiling_tutorial/profile.py @@ -1,10 +1,8 @@ -# profile.py
-
-import pstats, cProfile
-
-import calc_pi
-
-cProfile.runctx("calc_pi.approx_pi()", globals(), locals(), "Profile.prof")
-
-s = pstats.Stats("Profile.prof")
-s.strip_dirs().sort_stats("time").print_stats()
+import pstats, cProfile + +import calc_pi + +cProfile.runctx("calc_pi.approx_pi()", globals(), locals(), "Profile.prof") + +s = pstats.Stats("Profile.prof") +s.strip_dirs().sort_stats("time").print_stats() diff --git a/docs/examples/tutorial/profiling_tutorial/profile_2.py b/docs/examples/tutorial/profiling_tutorial/profile_2.py index 38fb50104..ca5ca514b 100644 --- a/docs/examples/tutorial/profiling_tutorial/profile_2.py +++ b/docs/examples/tutorial/profiling_tutorial/profile_2.py @@ -1,13 +1,11 @@ -# profile.py
-
-import pstats, cProfile
-
-import pyximport
-pyximport.install()
-
-import calc_pi
-
-cProfile.runctx("calc_pi.approx_pi()", globals(), locals(), "Profile.prof")
-
-s = pstats.Stats("Profile.prof")
-s.strip_dirs().sort_stats("time").print_stats()
+import pstats, cProfile + +import pyximport +pyximport.install() + +import calc_pi + +cProfile.runctx("calc_pi.approx_pi()", globals(), locals(), "Profile.prof") + +s = pstats.Stats("Profile.prof") +s.strip_dirs().sort_stats("time").print_stats() |