Programmering

Nuitka Python-til-C-kompilator gør store præstationsgevinster klar

Nuitka, en kompilator, der omdanner Python til C af hensyn til både præstationsgevinster og en mere bærbar driftstid, har nået sin udgivelse på 0,6 - en milepæl, der lægger grunden til fremtidige præstationsgevinster. Som Nuitka-udvikleren Kay Hayen udtrykte det: "Ydeevneforbedringer er sandsynligvis i hver kommende udgivelse."

Nuitka 0.6 anvender optimeringer til Pythons bool typer (sandt falsk), så koden, der bruger dem, kan reduceres til den mest effektive C-kode. Det bool optimeringer kommer som et optakt til lignende optimeringer for andre variable typer.

Nuitka, som Cython, kompilerer et Python-program til C og forbinder den resulterende eksekverbare med Python-runtime for maksimal kompatibilitet. Python version 2.6, 2.7 og 3.3 til 3.7 understøttes alle, inklusive konstruktioner som asynkronisering.

Python-programmer, der er kompileret med Nuitka, kan drage fordel af store ydeevneforøgelser. Hayen hævder, at en Nuitka-kompileret version af Pystone-benchmark kører omkring 312 procent hurtigere end en konventionel CPython-implementering.

Men Hayen advarer om, at de mest betydningsfulde præstationsforbedringer afventer ankomsten af ​​typen inferencing i Nuitka, hvilket muliggør fuld oversættelse af visse typer Python-objekter til native C-versioner.

Pythons dynamik gør mange slags optimeringer iboende vanskelige. Mange Cython-optimeringer kræver en hel del vejledning og en speciel kommentarsyntaks for de bedste resultater. Nuitka-projektet sigter mod at give de samme slags optimeringer uden at kræve, at udvikleren kommenterer koden.

En anden almindeligt anvendt Python-accelerator, PyPy, fungerer ved just-in-time at kompilere Python-kode til samling. Men PyPy fungerer bedst til optimering på stedet; det er ikke egnet til at kompilere en Python-app, der er distribueret på en enkeltstående måde. Nuitka genererer enkeltstående eksekverbare filer. Et af dets potentielle brugssager er at pakke en Python-app til tredjepartsdistribution.

Andre forbedringer i Nuitka 0.6 inkluderer understøttelse af Windows til Clang, Microsoft Visual C ++ og Cygwin-kompilatorer, caching af objektfiler til hurtigere kompilering (igen på Windows) og automatisk formatering af genereret C-kode iclang-format for læsbarhed.