Python unladen swallow teljesítmény
2009.07.05. 17:04
Nemrég a HUP-on szó volt az unladen swallowról, amely egy Google projekt a python amúgy igen szerénynek mondható teljesítményének fokozására.
Használok egy pythonban írt DNS szervert -a rugalmassága és egyszerű programozhatósága miatt-, így gondoltam kipróbálom vele.
Teszt/eredmény | Gyári 2.6.2-es python | Unladen trunk (2.6.1-es pythonra épül) | Unladen vs stock |
IPv4 PTR | 1716 | 1756 | 2,3% |
IPv4 A | 1864 | 1938 | 3,9% |
IPv6 PTR | 1507 | 1572 | 4,3% |
IPv6 AAAA | 2794 | 2895 | 3,6% |
Az unladen swallow egyik fontos eleme a JIT, illetve a bájtkód-értelmező kihagyása. A fenti eredmények az alapértelmezett beállítással készültek, ahol a JIT csak a "forró" kódra ugrik.
Van azonban egy "-j always" opció is, amely minden python kódot natív kóddá fordít, így azok akár gyorsabban is futhatnának. Akár.
A programot "-j always"-szel indítva a gép elkezdett dolgozni, a pár másodperces normál indulás helyett itt kb. egy perc is eltelt, míg beröffent a program.
A folyamat végére a top-ban ez látszott:
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
24653 root 3 116 0 767M 712M ucond 1 0:00 0.00% python
Azaz a python 712 MiB memóriát evett (egyébként 10-20 M-nál nem fogyaszt többet), nyilván annak köszönhetően, hogy a programfutás előtt az összes importált modult lefordította, és a memóriába töltötte, esetleg a fordításkor lefoglalt memóriát el is felejtette visszaadni...
De nézzük, hogy mit tud így a szerver:
Teszt/eredmény | Default (-j whenhot) | -j always | whenhot vs. always |
IPv4 PTR | 1756 | 1598 | -9% |
IPv4 A | 1938 | 1769 | -8,8% |
IPv6 PTR | 1572 | 1416 | -10% |
IPv6 AAAA | 2895 | 2648 | -8,6% |
Úgy tűnik jobb az alapértelmezett beállításon hagyni, és csak a sűrűn használt kódot -menet közben- fordítani.
Mint az a fentiekből látszik, egyelőre nem túl impresszív a teljesítménynövekedés, ez remélem a későbbiekben változni fog. Jó lenne egy olyan python futtatókörnyezet, amely megőrzi a nyelv rugalmasságát és szabadságát, de nagyobb sebességet nyújt, mint jelenleg.
A bejegyzés trackback címe:
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.