Programmering

Nuitka Python-to-C kompilatoren gjør store ytelsesgevinster

Nuitka, en kompilator som forvandler Python til C for både ytelsesgevinster og en mer bærbar kjøretid, har nådd 0,6-utgivelsen - en milepæl som legger grunnlaget for fremtidige ytelsesgevinster. Som Nuitka-utvikler Kay Hayen sa det: "Ytelsesforbedringer er sannsynlig i hver kommende utgivelse."

Nuitka 0.6 bruker optimaliseringer til Pythons bool typer (sant / usant), slik at koden som bruker dem, kan reduseres til en mest mulig effektiv C-kode. De bool optimaliseringer kommer som et opptak til lignende optimaliseringer for andre variabeltyper.

Nuitka, som Cython, kompilerer et Python-program til C, og kobler den resulterende kjørbare filen mot Python-kjøretiden for maksimal kompatibilitet. Python versjoner 2.6, 2.7 og 3.3 til 3.7 støttes alle, inkludert konstruksjoner som asynkronisering.

Python-programmer samlet med Nuitka kan dra nytte av store ytelsesforbedringer. Hayen hevder at en Nuitka-kompilert versjon av Pystone-referanseverdien løper omtrent 312 prosent raskere enn en konvensjonell CPython-implementering.

Men Hayen advarer om at de viktigste ytelsesforbedringene venter på ankomsten av type inferencing i Nuitka, noe som muliggjør full oversettelse av visse typer Python-objekter til innfødte C-versjoner.

Pythons dynamikk gjør mange typer optimaliseringer iboende vanskelige. Mange Cython-optimaliseringer krever mye veiledning og en spesialisert merkesyntaks for best resultat. Nuitka-prosjektet har som mål å tilby samme slags optimaliseringer uten å kreve at utvikleren kommenterer koden.

En annen ofte brukt Python-akselerator, PyPy, fungerer ved bare å samle Python-kode til montering. Men PyPy fungerer best for optimalisering på stedet; det er ikke egnet til å kompilere en Python-app som er distribuert på en frittstående måte. Nuitka genererer frittstående kjørbare filer. En av de potensielle brukssakene er å pakke inn en Python-app for distribusjon fra tredjepart.

Andre forbedringer i Nuitka 0.6 inkluderer støtte på Windows for Clang, Microsoft Visual C ++ og Cygwin-kompilatorer, caching av objektfiler for raskere rekompilering (igjen, på Windows) og automatisk formatering av generert C-kode iclang-format for lesbarhet.

$config[zx-auto] not found$config[zx-overlay] not found