Pautas para escribir código rápido para el JIT de PyPy

El JIT de PyPy puede hacer que el código de Python se ejecute mucho más rápido que CPython. ¿Existe un conjunto de directrices para escribir código que se pueda optimizar mejor con el comstackdor JIT? Por ejemplo, Cython puede comstackr algo de código estático en C ++, y tiene pautas para escribir código eficiente. ¿Hay un conjunto de buenas prácticas para PyPy? Sé que el proyecto PyPy tiene pautas para incluir sugerencias al escribir sus propios intérpretes habilitados para JIT para otros idiomas dynamics, pero eso no es relevante para la mayoría de los usuarios finales del marco, que simplemente están usando el intérprete. Las preguntas que me pregunto incluyen:

  1. Empaquetando un script en funciones
  2. Borrar explícitamente las variables
  3. Posibles formas de dar, o insinuar tipos de variables.
  4. Escribir bucles de cierta manera

PyPy wiki’s en BitBucket tiene una sección sobre Amabilidad JIT . Algunas publicaciones de blog ofrecen más consejos sobre cómo hacer que el código se ejecute rápidamente en PyPy, pero AFAIK la idea es que el código idiomático que no obliga a interpretar / realizar marcos debería ser rápido y es un error si no lo es.

Sé que para 3, algunas “afirmaciones x> 0” o declaraciones similares pueden ser útiles, pero no recuerdo dónde lo vi. También creo que he visto alguna sugerencia sobre la refactorización de rutas condicionales en bucles relacionados con 4 (edición: esto parece estar desactualizado ahora).

Aquí hay un hilo con alguna discusión relacionada . Puede verificar qué tan bien está funcionando el JIT con su código con jitviewer , pero está algo avanzado. Unirse a #pypy en Freenode le ayudará a obtener jitviewer y su código en particular.