Upgrade to Pro — share decks privately, control downloads, hide ads and more …

pypy - o interpretador mais rapido do velho oeste

pypy - o interpretador mais rapido do velho oeste

Palestra sobre pypy apresentada na pythonbrasil[9].

Andrews Medina

October 05, 2013
Tweet

More Decks by Andrews Medina

Other Decks in Technology

Transcript

  1. globo .com pypy o interpretador mais rápido do velho oeste

    Saturday, October 5, 13
  2. Saturday, October 5, 13

  3. ‣ djangobrasil ‣ globo.com desde 2008 ‣ splinter ‣ tsuru

    @andrewsmedina Saturday, October 5, 13
  4. ‣ sabe o que é? ‣ sabe o que é

    rpython? ‣ já usou pypy? ‣ já usou rpython? pypy? Saturday, October 5, 13
  5. ‣ rpython ‣ pypy ‣ mitos ‣ como contribuir cronograma

    Saturday, October 5, 13
  6. rpython Saturday, October 5, 13

  7. ‣ quem já teve vontade de escrever um compilador/ interpretador?

    ‣ que já implementou um? ? Saturday, October 5, 13
  8. ‣ python subset ‣ traduz rpython para c ‣ ferramenta

    para escrever interpretadores rpython Saturday, October 5, 13
  9. ‣ sintaxe x implementação x backend ‣ js x jit

    x c ‣ ruby x gc mark sweep x c ‣ ruby x jit x jvm rpython Saturday, October 5, 13
  10. ‣ pypy ‣ topaz ‣ lang-js ‣ lang-scheme ‣ lang-smaltalk

    ‣ pygirl (gameboy) ‣ lang-io ‣ hippy interpretadores Saturday, October 5, 13
  11. pypy Saturday, October 5, 13

  12. ‣ performance ‣ eficiência ‣ compatibilidade com cPython pypy Saturday,

    October 5, 13
  13. performance Saturday, October 5, 13

  14. ‣ python 2.7.3 ‣ algumas coisas em rpython compatibilidade Saturday,

    October 5, 13
  15. ‣ efeito colateral por escrever python em python interpretador level

    vs app level Saturday, October 5, 13
  16. app level Saturday, October 5, 13

  17. interpretador level Saturday, October 5, 13

  18. compatibilidade Saturday, October 5, 13

  19. ‣ navite code > bytecode ‣ compilação do bytecode ‣

    “esquentar o interpretador” jit Saturday, October 5, 13
  20. def f2(x, y): x = hint(x, promote=True) z = x

    * 2 + 1 return z + y jit Saturday, October 5, 13
  21. guard(x == 4) v1 = x * 2 z =

    v1 + 1 v2 = z + y return(v2) jit Saturday, October 5, 13
  22. guard(x == 4) v2 = 9 + y return(v2) jit

    Saturday, October 5, 13
  23. ‣ cPython: reference counting ‣ pypy: minimark garbage collector Saturday,

    October 5, 13
  24. class B(object): def __del__(self): print "oie" garbage collector Saturday, October

    5, 13
  25. >>>> b = B() >>>> b = 1 >>>> garbage

    collector - pypy Saturday, October 5, 13
  26. >>> b = B() >>> b = 1 oie garbage

    collector - cPython Saturday, October 5, 13
  27. b = B() a = B() b.x = a a.x

    = b garbage collector Saturday, October 5, 13
  28. ‣ executar c no python ‣ pip install cffi cffi

    Saturday, October 5, 13
  29. cffi Saturday, October 5, 13

  30. ‣ concorrencia ‣ inspirado pelo http://www.stackless.com/ ‣ http://greenlet.readthedocs.org/en/latest/ stackless Saturday,

    October 5, 13
  31. ‣ paralelismo ‣ baseado em banco de dados stm Saturday,

    October 5, 13
  32. ‣ escrito em rpython ‣ já funciona :) ‣ http://buildbot.pypy.org/numpy-status/latest.html

    numpy + pypy Saturday, October 5, 13
  33. >>>> import numpypy >>>> numpypy.array([1,2,3]) array([1, 2, 3]) >>>> numpy

    + pypy Saturday, October 5, 13
  34. numpy + pypy ‣ 231/559 names ‣ 131/161 ndarray attributes

    ‣ 34/48 dtype attributes ‣ 63/134 generic attributes ‣ 28/32 flatiter attribute Saturday, October 5, 13
  35. mitos Saturday, October 5, 13

  36. integração com c Saturday, October 5, 13

  37. ‣ funciona com ctypes (mysqldb) ‣ cffi integração com c

    Saturday, October 5, 13
  38. ‣ funciona com ctypes (mysqldb) ‣ cffi integração com c

    Saturday, October 5, 13
  39. python3 Saturday, October 5, 13

  40. python3 Saturday, October 5, 13

  41. python3 Saturday, October 5, 13

  42. 6x mais rápido que cPython Saturday, October 5, 13

  43. 6x mais rápido que cPython Saturday, October 5, 13

  44. 6x mais rápido que cPython Saturday, October 5, 13

  45. 6x mais rápido que cPython Saturday, October 5, 13

  46. compilar pypy demora Saturday, October 5, 13

  47. compilar pypy demora Saturday, October 5, 13

  48. compilar pypy demora Saturday, October 5, 13

  49. compilar pypy demora Saturday, October 5, 13

  50. compilar pypy demora Saturday, October 5, 13

  51. ‣ pypy.org ‣ virtualenv ‣ testes ‣ benchmarks como começar

    Saturday, October 5, 13
  52. ‣ bugs.pypy.org ‣ https://bitbucket.org/pypy/pypy ‣ http://doc.pypy.org ‣ doações (stm, numpy,

    python3) como contribuir Saturday, October 5, 13
  53. obrigado! @andrewsmedina Saturday, October 5, 13