Szybkie stringi 2

Po lekkim szoku wywołanym odkryciem jak się zachowuje Python przy składaniu stringów postanowiłem sprawdzić
jak inne wersje Pythona sobie radzą. Przetestowałem Pythona 3.2 oraz PyPy 1.7-r2 i 1.8-r1. Kod pozostał ten sam jak w pierwszej części (oprócz instrukcji print, którą musiałem dostosować do Pythona 3.2), do Pythona 3.2 dołożyłem składanie stringów przy użyciu format().

Wyniki mnie nie zaskoczyły bo spodziewałem się wszystkiego a przede wszystkim, że pypy zmiecie pythona. A oto one, Python 2.7 został umieszczony tylko dla porównania jak się zmieniają czasy dla poszczególnych wersji.

$ python2.7 timeit_string_format.py
+ , [1.085777997970581, 1.028688907623291, 1.0265541076660156]
% , [1.659928798675537, 1.6647131443023682, 1.6848421096801758]

$ python3.2 timeit_string_format.py
+ ,  [1.2642889022827148, 1.3161091804504395, 1.2756080627441406]
% ,  [1.154999017715454, 1.201200008392334, 1.1763830184936523]
format ,  [2.1013739109039307, 1.9700350761413574, 1.9505469799041748]

$ pypy-c1.7 timeit_string_format.py
+ , [0.008589029312133789, 0.0017871856689453125, 0.0018048286437988281]
% , [0.14042305946350098, 0.13074803352355957, 0.1352391242980957]

$ pypy-c1.8 timeit_string_format.py
+ , [0.01731586456298828, 0.004745960235595703, 0.0049970149993896484]
% , [0.15033602714538574, 0.12151813507080078, 0.13396596908569336]

Wersja 3.2 przyspieszyła przy składaniu stringów używając % ale znowu łączenie + zwolniło. No a pypy po prostu śmiga. Wyniki ładnie dosyć obrazują „rozgrzewanie” maszyny wirtualnej, pierwszy wynik dla obu wersji pypy odstaje dosyć wyraźnie od pozostałych. Dziwi mnie spadek wydajności wersji 1.8, nie wiem czy powinienem to zgłosić. Programiści podczas prezentacji na PyConie mówili, że jeśli coś jest wolniej to jest to błąd.
To tylko ciekawostka bo tak naprawdę liczy się przede wszystkim czytelność i tylko jeśli to naprawdę jest wąskie gardło aplikacji to można się zastanawiać nad optymalizacją.

Posted in python and tagged , , , , , . Bookmark the permalink. RSS feed for this post. Leave a trackback.

2 Responses to Szybkie stringi 2

  1. gryf says:

    Gwoli ścisłości. Pypy nie ma maszyny wirtualnej tylko JIT, przez co niektóre (zwykle powtarzalne) operacje szybciej się wykonują niż w cpython.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Swedish Greys - a WordPress theme from Nordic Themepark.

Performance Optimization WordPress Plugins by W3 EDGE