Δημοσιεύτηκε: 07 Αύγ 2011, 12:44
Πήρα από το project Euler διάφορες εκδοχες του προγράμματος και τις ανέβασα εδώ. Το script τρέχει σε Python2, Python3 και PyPy. Χρησιμοποιώντας το module timeit, τρέχει την κάθε συνάρτηση 5 φορές, και εκτυπώνει τον καλύτερο χρόνο εκτέλεσής της. Μόνο της συνάρτησης. Τα imports, η εκκίνηση του python interpreter κτλ δε χρονομετρούνται. Αυτός είναι ο στάνταρ τρόπος της python για να συγκρίνεις την ταχύτητα εκτέλεσης snippets.
Τα αποτέλεσματα φαίνονται στο επόμενο spoiler. Για τις συγκεκριμένες συναρτήσεις η Python3 είναι πιο αργή από την Python2 σε όλες τις περιπτώσεις. Το pypy είναι πιο γρήγορο αλλά αυτό είναι αναμενόμενο (μάλιστα η συνάρτηση με τα regex είναι η γρηγορότερη από όλες!)
Συγκρίνοντας τώρα με την time (καλύτερος χρόνος user από 5 εκτελέσεις), βλέπουμε ότι η ταχύτητα εκτέλεσης είναι:
Δηλαδή η Python2 εξακολουθεί να είναι πιο γρήγορη από την C ενώ η Python3 πιο αργή.
Επειδή σαφώς το overhead του python interpreter θα είναι σημαντικό. Δοκίμασα να το χρονομετρήσω. Όπως φαίνεται το pypy αργεί να ξεκινήσει για αυτό και πατώνει στην time. Στην Python3 είναι σχεδόν το διπλάσιο από αυτό της Python2. Αν αφαιρέσουμε το overhead αυτό από τους χρόνους της time για την πλήρη εκτέλεση του προγράμματος, βλέπουμε ότι η python2 και η python3 είναι πολύ κοντά, γεγονός που φάνηκε και από τη σύγκριση με το timeit.
Τα αποτέλεσματα φαίνονται στο επόμενο spoiler. Για τις συγκεκριμένες συναρτήσεις η Python3 είναι πιο αργή από την Python2 σε όλες τις περιπτώσεις. Το pypy είναι πιο γρήγορο αλλά αυτό είναι αναμενόμενο (μάλιστα η συνάρτηση με τα regex είναι η γρηγορότερη από όλες!)
Spoiler: show
Συγκρίνοντας τώρα με την time (καλύτερος χρόνος user από 5 εκτελέσεις), βλέπουμε ότι η ταχύτητα εκτέλεσης είναι:
- Κώδικας: Επιλογή όλων
Python 2 < C < Python 3 < PyPy
Δηλαδή η Python2 εξακολουθεί να είναι πιο γρήγορη από την C ενώ η Python3 πιο αργή.
Spoiler: show
Επειδή σαφώς το overhead του python interpreter θα είναι σημαντικό. Δοκίμασα να το χρονομετρήσω. Όπως φαίνεται το pypy αργεί να ξεκινήσει για αυτό και πατώνει στην time. Στην Python3 είναι σχεδόν το διπλάσιο από αυτό της Python2. Αν αφαιρέσουμε το overhead αυτό από τους χρόνους της time για την πλήρη εκτέλεση του προγράμματος, βλέπουμε ότι η python2 και η python3 είναι πολύ κοντά, γεγονός που φάνηκε και από τη σύγκριση με το timeit.
Spoiler: show