( uid_6201 | 2012. 12. 08., szo – 13:24 )

Mérted a sebességet? Példának ajánlom figyelmedbe az alábbit:

1. generálj egy 100.000 sornyi 40 karakter hosszú [0-9A-Za-z] randomstringből álló fájlt.
2. olvasd fel, rendezd le 100-szor (ügyelve hogy mindig az eredetiről való kópiát rendezd) méghozzá az alábbi módokon:

a.) "LEGÓ nyelvként" használva a Pythont, azaz a C-ben írt beépített sort() metódussal dolgozz. Így a tisztán C-hez képest csak dupla erőforrás kell Python/Pypy esetén, hiszen a rabszolgamunkát a C-ben írt sort() végzi.
b.) "algoritmus nyelveként", azaz a QSORT-ot Python nyelven leprogramozva. Itt látványos lesz a különbség, a Pypy bíztató a Pythonhoz képest, de nem bíztató a C-hez képest. A cython a python kódban alkalmazott kényelmes listakezelés miatt elvérzik. Ha nem listákkal dolgozol a cython-nak szánt kódban (cdef-ekkel direkt C-s vektorok), akkor tudsz gyorsulást elérni.
c.) a fentieket vesd össze egy tisztán C-ben írt qsort futásidejével.

A time shell parancs segít időt mérni.

Ha a fenti teszteket elvégzed, rájössz, miért írtam, hogy jelfeldolgozás "algoritmus nyelveként" nem alkalmas, "LEGÓ nyelvének", azaz amikor az elemi blokkos műveleteket kötözöd össze, arra sok adat esetén is alkalmas.