Προγραμματισμός

Ο μεταγλωττιστής Nuitka Python-to-C προσφέρει μεγάλα κέρδη απόδοσης

Ο Nuitka, ένας μεταγλωττιστής που μετατρέπει την Python σε C για χάρη τόσο της απόδοσης όσο και του πιο φορητού χρόνου εκτέλεσης, έχει φτάσει στην κυκλοφορία του 0,6 - ένα ορόσημο που θέτει τις βάσεις για μελλοντικά κέρδη απόδοσης. Όπως το έθεσε ο προγραμματιστής της Nuitka Kay Hayen, «πιθανές βελτιώσεις απόδοσης σε κάθε επόμενη κυκλοφορία».

Το Nuitka 0.6 εφαρμόζει βελτιστοποιήσεις για το Python's bool τύποι (Σωστό Λάθος), έτσι ώστε ο κώδικας που τα χρησιμοποιεί μπορεί να μειωθεί στον πιο αποδοτικό δυνατό κώδικα C. ο bool Οι βελτιστοποιήσεις έρχονται ως προοίμιο για παρόμοιες βελτιστοποιήσεις για άλλους τύπους μεταβλητών.

Η Nuitka, όπως και η Cython, μεταγλωττίζει ένα πρόγραμμα Python στο C και συνδέει το προκύπτον εκτελέσιμο με το χρόνο εκτέλεσης του Python για μέγιστη συμβατότητα. Υποστηρίζονται όλες οι εκδόσεις Python 2.6, 2.7 και 3.3 έως 3.7, συμπεριλαμβανομένων κατασκευών όπως ασύγχρονος.

Τα προγράμματα Python που καταρτίζονται με το Nuitka μπορούν να επωφεληθούν από τις μεγάλες βελτιώσεις απόδοσης. Ο Hayen ισχυρίζεται ότι μια έκδοση που έχει καταρτιστεί από το Nuitka του δείκτη αναφοράς Pystone τρέχει περίπου 312% ταχύτερα από μια συμβατική εφαρμογή CPython.

Ωστόσο, ο Hayen προειδοποιεί ότι οι πιο σημαντικές βελτιώσεις στην απόδοση περιμένουν την άφιξη των συμπερασμάτων τύπου στο Nuitka, επιτρέποντας την πλήρη μετάφραση ορισμένων τύπων αντικειμένων Python σε εγγενείς εκδόσεις C.

Ο δυναμισμός της Python καθιστά δύσκολη τη φύση πολλών ειδών βελτιστοποιήσεων. Πολλές βελτιστοποιήσεις Cython απαιτούν πολλή καθοδήγηση και εξειδικευμένη σύνταξη σχολιασμών για τα καλύτερα αποτελέσματα. Το έργο Nuitka στοχεύει να παρέχει τα ίδια είδη βελτιστοποιήσεων χωρίς να απαιτείται από τον προγραμματιστή να σχολιάσει τον κώδικα.

Ένας άλλος επιταχυντής Python που χρησιμοποιείται συνήθως, το PyPy, λειτουργεί με τη σύνταξη κώδικα Python σε συναρμολόγηση. Αλλά το PyPy λειτουργεί καλύτερα για επιτόπια βελτιστοποίηση. δεν ταιριάζει στη σύνταξη μιας εφαρμογής Python που αναπτύσσεται με αυτόνομο τρόπο. Η Nuitka δημιουργεί αυτόνομα εκτελέσιμα. Μία από τις πιθανές περιπτώσεις χρήσης είναι η συσκευασία μιας εφαρμογής Python για διανομή τρίτων.

Άλλες βελτιώσεις στο Nuitka 0.6 περιλαμβάνουν υποστήριξη στα Windows για τους μεταγλωττιστές Clang, Microsoft Visual C ++ και Cygwin, προσωρινή αποθήκευση αρχείων αντικειμένων για ταχύτερη αναδιάταξη (ξανά, στα Windows) και αυτόματη μορφοποίηση του παραγόμενου κώδικα C στομορφή clang για αναγνωσιμότητα.