Author: Antonio Cuni <anto.c...@gmail.com> Branch: extradoc Changeset: r3732:2f5686832a7c Date: 2011-06-17 17:21 +0200 http://bitbucket.org/pypy/extradoc/changeset/2f5686832a7c/
Log: finish the talk (more or less) diff --git a/talk/ep2011/talk/beamerdefs.txt b/talk/ep2011/talk/beamerdefs.txt --- a/talk/ep2011/talk/beamerdefs.txt +++ b/talk/ep2011/talk/beamerdefs.txt @@ -28,6 +28,9 @@ } +.. |strike<| raw:: latex + + \sout{ .. closed bracket .. =========================== @@ -85,6 +88,21 @@ \end{columns} + .. |snake| image:: ../../img/py-web-new.png :scale: 15% + + +.. nested blocks +.. =========================== + +.. |nested| raw:: latex + + \begin{columns} + \begin{column}{0.85\textwidth} + +.. |end_nested| raw:: latex + + \end{column} + \end{columns} diff --git a/talk/ep2011/talk/ctypesbench.py b/talk/ep2011/talk/ctypesbench.py new file mode 100644 --- /dev/null +++ b/talk/ep2011/talk/ctypesbench.py @@ -0,0 +1,22 @@ +import time +N = 10000000 + +def main(N): + import ctypes + libm = ctypes.CDLL('libm.so') + pow = libm.pow + pow.argtypes = [ctypes.c_double, ctypes.c_double] + pow.restype = ctypes.c_double + # + i = 0 + res = 0 + start = time.clock() + while i < N: + res += pow(2, 3) + i += 1 + end = time.clock() + print 'total:', end-start + return res + + +main(N) diff --git a/talk/ep2011/talk/question-mark.png b/talk/ep2011/talk/question-mark.png new file mode 100644 index 0000000000000000000000000000000000000000..c15378b85f7ba141ed6dd631c8b249da91003538 GIT binary patch [cut] diff --git a/talk/ep2011/talk/stylesheet.latex b/talk/ep2011/talk/stylesheet.latex --- a/talk/ep2011/talk/stylesheet.latex +++ b/talk/ep2011/talk/stylesheet.latex @@ -1,3 +1,4 @@ +\usepackage{ulem} \usetheme{Boadilla} \usecolortheme{whale} \setbeamercovered{transparent} diff --git a/talk/ep2011/talk/talk.rst b/talk/ep2011/talk/talk.rst --- a/talk/ep2011/talk/talk.rst +++ b/talk/ep2011/talk/talk.rst @@ -236,8 +236,14 @@ :align: center -Why Python is slow? -------------------- +Is Python slow? +---------------- + +- |strike<| Python is slow |>| + +- Python is hard to optimize + +|pause| - Huge stack of layers over the bare metal @@ -264,7 +270,7 @@ def __add__(self, q): if not isinstance(q, Point): - raise TypeError + raise TypeError x1 = self.x + q.x y1 = self.y + q.y return Point(x1, y1) @@ -441,8 +447,8 @@ Concrete example: ``ctypes`` ---------------------------- +|scriptsize| |example<| |>| -|scriptsize| .. sourcecode:: python @@ -451,7 +457,73 @@ pow = libm.pow pow.argtypes = [ctypes.c_double, ctypes.c_double] pow.restype = ctypes.c_double + pow(2, 3) # <--- + +|end_example| +|end_scriptsize| + +Layers and layers +---------------------------- + +.. raw:: latex + + \setbeamercovered{invisible} + + +|scriptsize| + +|example<| |small| ``CFuncPtrFast.__call__`` (Python) |end_small| |>| +check that the cache is still valid |pause| + +|nested| |example<| |small| ``CFuncPtrFast._call_funcptr`` (Python) |end_small| |>| +some runtime checks (e.g. ``_flags_``) |pause| + +|nested| |example<| |small| ``_ffi.FuncPtr.__call__`` (RPython) |end_small| |>| +typecheck/unbox arguments, put them in raw C buffers |pause| + +|nested| |example<| |small| ``c_ffi_call`` (C) [libffi.so] |end_small| |>| +takes arguments from the raw C buffers |pause| + +|nested| |alert<| |small| ``pow@0xf72de000`` (C) [libm.so] |end_small| |>| +return 8 + +|end_alert| |end_nested| +|end_example| |end_nested| +|end_example| |end_nested| +|end_example| |end_nested| +|end_example| |end_scriptsize| -|end_example| +``ctypes`` demo +---------------- + +Conclusion +---------- + +- PyPy is fast + +- mature + +- stable + +- abstractions for free! + +|pause| + +- (I wonder why you all are still here instead of busy trying PyPy :-)) + +Contacts, Q/A +-------------- + +- http://pypy.org + +- blog: http://morepypy.blogspot.com + +- mailing list: pypy-dev (at) python.org + +- IRC: #pypy on freenode + +.. image:: question-mark.png + :scale: 10% + :align: center _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit