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.

python unladen swallow teljesítmény [qps]
Teszt/eredményGyári 2.6.2-es pythonUnladen trunk (2.6.1-es pythonra épül)Unladen vs stock
IPv4 PTR171617562,3%
IPv4 A186419383,9%
IPv6 PTR150715724,3%
IPv6 AAAA279428953,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:

-j whenhot vs. -j always [qps]
Teszt/eredményDefault (-j whenhot)-j alwayswhenhot vs. always
IPv4 PTR17561598-9%
IPv4 A19381769-8,8%
IPv6 PTR15721416-10%
IPv6 AAAA28952648-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:

http://suckit.blog.hu/api/trackback/id/tr221228088

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.

Nincsenek hozzászólások.