Creșterea vitezei: Cython vs Cpython vs Python & Pypy

Săptămâna trecută am început această serie de bloguri în două părți despre creșterea vitezei în Python prin Cython și PyPy. Deși am discutat deja despre efectele Cython, am vrut să continui discuția cu o privire asupra PyPy și apoi un contrast între PyPy și Cython.

Ce este PyPy?

PyPyPy este un interpretor Python alternativ și un compilator just-in-time (JIT) care este foarte compatibil (sub rezerva câtorva avertismente) cu interpretorul CPython. Este proiectat pentru viteză și eficiență și utilizează un compilator JIT de urmărire pentru a optimiza părțile programului executate frecvent în timpul execuției, crescând astfel viteza de execuție.

PyPy rulează programe Python obișnuite; în general, nu este necesar să se facă nicio modificare a codului Python pentru a-i permite să ruleze pe PyPy. Datorită naturii compilatorului JIT, acesta are nevoie de timp pentru a analiza părțile de program executate frecvent, astfel încât funcționează cel mai bine pe programe care se execută mai mult de câteva secunde.

Poate cel mai mare obstacol în calea utilizării PyPy într-un sistem de producție este lipsa sa de suport pentru modulele de extensie CPython. Conform documentației PyPy, suportul pentru modulele de extensie este experimental și adesea rulează mult mai lent decât în CPython. Acest lucru înseamnă că unele biblioteci terțe care au module de extensie C ar putea să nu funcționeze pe PyPy – biblioteca de calcul științific NumPy este un exemplu notabil. Acestea fiind spuse, PyPy este capabil să ruleze majoritatea cadrelor și bibliotecilor Python populare, cum ar fi Django, Flask și SQLAlchemy.

Pagina PyPy de pe Wikipedia și site-ul PyPy oferă o mulțime de informații despre ce este PyPy și cum să îl utilizați; acesta din urmă are, de asemenea, o secțiune frumoasă care prezintă o listă de repere și îmbunătățiri ale vitezei lor față de CPython.

Pagina PyPy de pe Wikipedia și site-ul PyPy oferă o mulțime de informații despre ce este PyPy și cum să îl utilizați; acesta din urmă are, de asemenea, o secțiune frumoasă care arată o listă de puncte de referință și îmbunătățirile lor de viteză față de CPython.

Cum funcționează Cython vs. CPython

Obiectivul meu principal în realizarea acestui exercițiu a fost să înțeleg cum funcționează instrumentele și să pot compara diferențele de sintaxă și structură de cod dintre ele. Având în vedere acest lucru, am ales să scriu un program simplu de integrare numerică, care se bazează pe un exemplu oferit în documentația Cython. Sursa completă a proiectului, inclusiv instrucțiunile de instalare și compilare Cython, poate fi găsită pe Bitbucket.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.