jump to navigation

Google continua a migliorare Python: Unladen Swallow 2009Q2

In Espresso il 15/07 @ 15:58 trackback
Shared by felipe
Tempo fa avevo espresso[1] il mio interesse nei confronti di questo progetto, targato niente meno che Google, di rendere Python fino a cinque volte più veloce di adesso.

Unladen Swallow è adesso arrivato alla versione 2009Q2 e sebbene non ancora marcato come stabile, passa test molto importanti, che comprendono la compatibilità con Twisted, Django, NumPy e Swig.

Spero che possiamo vederne i risultati sui nostri desktop. Vai Python!

The Unladen Swallow 2009Q2 release is out. Unladen Swallow is an accelerated Python implementation. It now uses LLVM to compile Python functions to machine code, and appears to be coming along nicely, even if the developers do not yet recommend its use in production situations. "Unladen Swallow 2009Q2 passes the tests for all the third-party tools and libraries listed on the Testing page. Significantly for many projects, this includes compatibility with Twisted, Django, NumPy and Swig."

| Leggi l'originale...

Condividi questo articolo:

  • TwitThis 
  • FriendFeed 
  • Facebook 
  • Badzu 
  • LinkedIn 
  • Google 
  • del.icio.us 
  • Wikio IT 
  • DiggIta 
  • Technotizie 
  • OKNotizie 

Pagine forse correlate:

  • gondsman
    - What is the air-speed velocity of an unladen swallow?
    - What do you mean? An African or a European swallow?
    - Uh? I don't know that! AAAAAAHHHHHHHHHHH!!!!
  • Grande Gondsman! A proposito... la nota[1] era:

    https://pollycoke.net/2009/03/27/google-cerca-di...

    :D
  • gondsman
    A proposito...
    http://www.wolframalpha.com/input/?i=What+is+th...
    (guarda anche il suggerimento)

    Per tutti gli altri... vedetevi Monty Python and the Holy Grail! E vedetevelo rigorosamente in inglese, perché il doppiaggio italiano del bagaglino è un vero stupro!
  • barra
    speriamo, sarebbe molto interessante e utile (penso ad esempio a zeitgeist o soluzioni come netbook remix).
  • rief
    Fantastico, l'unico vero neo di Python sono le performance, levato quello sono ben pochi i linguaggi in grado di reggere il confronto e comunque nessuno di quelli usati in larga scala.
  • mauriziolupo
    Parlare di problemi di performance in python, IMHO, non è corretto. Python è un linguaggio di altissimo livello e implementa una astrazione molto più elevata di altri linguaggi (come java o c#).
    La macchina virtuale Cpython è molto più leggera ed essenziale di java.
    Nella maggior parte dei casi programmando tenendo conto dell'implementazione sottostante si ottiene codice molto vicino come performance a quello scritto C. Quando, nonostante tutto, l'implementazione degli algoritmi non è sufficientemente veloce è possibile costruire dei moduli scritti in C riutilizzabili in altri ambiti (la libreria base è piena di questi esempi).
    Purtroppo la facilità con cui si impara il linguaggio fa credere che utilizzarlo al meglio sia più facile di quanto in realtà è.
    Il problema che il progetto unladen swallow vuole risolvere è quello della scalabilità all'interno di ambiti di programmazione multithread e mutiprocesso. Infatti su un singolo core non ci si aspetta alcun miglioramento.
  • rief
    Non vedo cosa ho detto di male, ma facciamo così: secondo me in alcuni ambiti Python è lento, ma anche se fosse veloce quanto il C ben vengano soluzioni che puntano a migliorarne le performance (in qualunque ambito).
  • mauriziolupo
    Scusami, non era mia intenzione essere aggressivo :-) Ho solo notato che si sta diffondendo il mito della lentezza di python e vorrei sfatarlo ! Se hai in mente un ambito nel quale non ritieni python sufficientemente performante (e se ne hai voglia . . .) proviamo a discuterne . . .
  • rief
    No ma figurati se devi scusarti, sono io che a volte prendo tutto come un attacco :-D e quindi probabilmente sono più giuste le mie di scuse. Mi spiace.
    Quanto agli ambiti io qui mi riferisco (sperando di non dire caxxate che uso davvero poco python e parlo per benchmarks visti) alla gestione di classi e oggetti.
    Comunque online esistono parecchi benchmark che secondo me testimoniano la lentezza di python in confronto ad altri linguaggi ed un esempio, trovato googlando, è http://blog.dhananjaynene.com/2008/07/performan... dove mi sembra che sia chiara la differenza tra python e il suo interprete standard e la macchina virtuale di Java o il C++ (con quest'ultimo in particolare). Cosa ne pensi? In particolare, non pensi che l'interprete standard di Python sia lento?
  • rief
    Mi hanno fatto notare un'altra cosa interessante: Python è lento nella ricorsione. Comunque per farsi un'idea della differenza tra Python e gli altri linguaggi ci sono sempre i benchmarks di debian, per esempio quello tra java 6 client e python http://shootout.alioth.debian.org/debian/benchm... . Io direi che i risultati sono evidenti, python è lento in relazione ad altri linguaggi.
  • mauriziolupo
    Ho guardato il codice di esempio che hai linkato. L'implementazione python è assolutamente assurda ! Viene costruita una lista linkata mentre il tipo list di python è già una lista linkata (peraltro scritta in C e altamente ottimizzata). Su http://paddy3118.blogspot.com/2009/02/compariso... vengono proposte soluzioni più di 10 volte più performanti (una è lunga 10 righe !!!!).
    L'interprete python è migliorabile, specialmente per girare su architetture multicore. Attualmente parte in un attimo ed è sufficientemente performante. Confronta ad esempio in quanto tempo parte la java vm (vedi open office o eclipse) e quante risorse si porta via.
    Ti spiego come la vedo:
    python è un linguaggio di scripting che fa da colla tra vari componenti scritti in C (in java per quanto riguarda jython). Finchè trovi i componenti che ti servono allora puoi scrivere solo in python. Se non li trovi e hai bisogno di performance allora devi scrivere in C. Da quando lavoro in python mi è capitato molto raramente di utilizzare il C in quanto si trovano ottime librerie per fare quasi tutto!
  • rief
    Bello l'articolo linkato :). Non credo si possa comparare Eclipse e Open Office con altri applicativi in Python, perchè per farlo dovrei avere delle alternative scritte in Python. Ho avuto modo di studiare per un pò il codice di Eclipse e secondo me non è vero che Java non è performante, è che Eclipse è mastodontico...quanto alla velocità di avvio, non ho proprio idea di come fare a capire quali dei due sia più veloce, ma mi informerò.
    Certo resta interessante il fatto che Google punti così tanto su Python.
  • lash87
    L'implementazione non è assurda.
    Sono benchmark scritti per valutare il linguaggio (in questo caso il suo interprete) e non la libreria! Python è indiscutibilmente lento (confronto con C,C++ ma anche java) , ha però il vantaggio di avere molte librerie bindate direttamente su C.
    Usando ottimizzatori come Pysco o PyPY le prestazioni si alzano drasticamente; putroppo manca un benchmark su PyPY.

    Ciao
  • mauriziolupo
    Mi spiegheresti che senso ha valutare il linguaggio per quello che è se non posso utilizzare i suoi costrutti per realizzare il mio lavoro ? Se traduci da C o da Java senza essere "idiomatico" ottiene un sacco di codice lento e ingestibile. Non è necessario fare dei benchmark per sapere che, messi sullo stesso piano, sono più veloci gli altri linguaggi: i tipi python sono dinamici, il linguaggio è pseudocompilato: questo costituisce necessariamente un overhead . . .(vedi http://dirtsimple.org/2004/12/python-is-not-jav...)
  • scusate, ma avete letto il ProjectPlan di unladen-swallow? a me fa troppo ridere... sembra un mondo alla rovescia (tipo pianeta delle scimmie)... :D

    Windows support: CPython currently has good Windows support, and we'll have to maintain that in order for our patches to be merged into mainline. Since none of the Unladen Swallow engineers have any/much Windows experience or even Windows machines, keeping Windows support at an acceptable level may slow down our forward progress or force us to disable some performance-beneficial code on Windows. Community contributions may be able to help with this.
  • Mesh
    Ah ah ah, grandi!