Llenguatges de programació: Python és lent, però està a punt de ser més ràpid

Python és increïblement popular perquè és fàcil d’aprendre, versàtil i té milers de biblioteques útils per a la ciència de dades. Però una cosa que no és és ràpida.

Això està a punt de canviar a Python 3.11, actualment en la primera fase beta de la seva previsualització (versió 3.11.0b1) abans del seu llançament estable a finals d’aquest any. El desenvolupador de Core Python (CPython) Mark Shannon va compartir detalls sobre el projecte per fer Python més ràpid a la conferència PyCon 2022 d’aquesta setmana, on els desenvolupadors també van mostrar el progrés en l’objectiu d’executar codi Python al navegador.

L’any passat, Microsoft va finançar un projecte per a la Python Software Foundation (PSF), dirigida pel creador de Python Guido van Rossum i Shannon, per fer Python el doble de ràpid que la sèrie estable 3.10 actual. La visió és impulsar Python cap al rendiment de C.

VEURE: Com aconseguir l’ascens: cinc maneres de pujar l’escala i tenir una carrera d’èxit

Microsoft va contractar van Rossum el 2020 i li va donar mà lliure per triar qualsevol projecte. A la conferència de PyCon 2021 de l’any passat, va dir que “va optar per tornar a les meves arrels” i que treballaria en la famosa manca de rendiment de Python.

El rendiment, potser, no ha estat una prioritat màxima per a Python, ja que l’adopció ha estat impulsada per l’aprenentatge automàtic i la ciència de dades gràcies a Tensor Flow, Numpy, Pandas i moltes més plataformes, com ara l’SDK Boto3 d’AWS per a Python. Aquestes plataformes es descarreguen desenes de milions de vegades al mes i s’utilitzen en entorns que sovint no estan restringits pel maquinari.

El projecte Faster CPython va proporcionar algunes actualitzacions sobre el rendiment de CPython 3.11 durant l’any passat. Abans de PyCon 2022, el projecte va publicar més resultats comparant la previsualització beta 3.11 amb 3.10 en desenes de mètriques de rendiment, mostrant que 3.11 era en general 1.25 vegades més ràpid que 3.10.

Shannon és realista sobre la capacitat del projecte per millorar el rendiment de Python, però creu que les millores poden estendre l’ús viable de Python a més màquines virtuals.

“Python és àmpliament reconegut com a lent. Tot i que Python mai aconseguirà el rendiment de llenguatges de baix nivell com C, Fortran o fins i tot Java, ens agradaria que fos competitiu amb implementacions ràpides de llenguatges de script, com V8 per Javascript o luajit per lua”, va escriure l’any passat a la proposta de millora de Python (PEP) 659.

“Concretament, volem assolir aquests objectius de rendiment amb CPython per beneficiar tots els usuaris de Python, inclosos els que no poden utilitzar PyPy o altres màquines virtuals alternatives”.

L’enfocament clau que es detalla a PEP 659 és un “intèrpret adaptatiu i centrat que s’especialitza el codi de manera agressiva, però en una regió molt petita, i és capaç d’adaptar-se a una mala especialització ràpidament i a baix cost”.

Com s’ha assenyalat, les optimitzacions per a màquines virtuals són “cares” i sovint requereixen un llarg temps d'”escalfament”. Per evitar aquesta despesa de temps, la VM hauria d'”especular que l’especialització està justificada fins i tot després d’unes quantes execucions d’una funció”, de manera que l’intèrpret ha d’optimitzar i desoptimitzar contínuament i molt barat.

Això hauria de donar lloc a un intèrpret més ràpid per a CPython que fa un seguiment dels codis de bytes individuals durant l’execució d’un programa. El treball sobre el nou intèrpret està gairebé acabat, però encara requereix la finalització d’especialitzacions dinàmiques per a bucles i operacions binàries, segons PSF.

A més, el consum de memòria a la 3.11 no ha canviat respecte a la 3.10.

VEURE: Els desenvolupadors s’enfronten a l’esgotament. Així és com les empreses intenten solucionar-ho

Sobre la qüestió d’un compilador just-in-time (JIT) per a l’actuació de Python, Shannon va suggerir que no era una prioritat i que probablement no arribaria fins a Python 3.13, segons la cobertura de l’esdeveniment de la Python Software Foundation.

Anaconda, el creador de la distribució Anaconda Python per a la ciència de dades, dóna suport al projecte Pyston, una implementació de Python que promet millores de velocitat respecte a Python.

Un dels esforços més antics d’Anaconda per accelerar Python va ser el projecte Numba, un compilador JIT basat en LLVM per a CPython, que accelera les funcions numèriques de Python que s’executen a la CPU o la GPU, però no pot optimitzar programes sencers i no aborda l’ús més ampli de Python. caixes. Un altre és PyPy, una implementació de CPython amb un compilador JIT per a un rendiment més ràpid.

Segons el pla d’implementació de Faster Python, CPython 3.12 podria obtenir un “compilador JIT simple per a regions petites” que compila regions petites de codi especialitzat, mentre que 3.13 milloraria el compilador per ampliar les regions per a la compilació.

Leave a Comment

Your email address will not be published. Required fields are marked *