Ugrás a tartalomhoz

Futásidejű fordítás

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából

A futásidejű fordítás vagy röpfordítás (angolul just-in-time compilation, azaz JIT), a bájtkód-fordított rendszerek teljesítményének növelésére szolgáló technika. A bájtkódot futási időben fordítja natív kódra. A futásidejű fordításhoz két korábbi futtató környezet adta az ötletet: a bájtkódfordítás (bytecode compilation) és a dinamikus fordítás (dynamic compilation).

Egy bájtkódfordított rendszerben (ilyen a Java, a .NET nyelvek, Perl, a GNU CLISP) a forráskódot egy köztes kódba fordítják, amit bájtkódnak neveznek. A bájtkód nem gépi kód egy adott processzorra, így hordozható a különböző számítógép-architektúrák között. A bájtkódot aztán értelmezik vagy egy virtuális gépen futtatják.

A dinamikus fordítókörnyezetben a fordító futás közben végzi feladatát. Például a legtöbb Common Lisp rendszer rendelkezik egy compile függvénnyel, ami képes a futás közben keletkezett új függvények lefordítására. Az előnye az interaktív hibakeresés, viszont ez az előny kész rendszerek esetén nem túl hasznos.

Egy JIT környezetben a bájtkódra fordítás az első lépés, azaz a forráskód hordozható és optimalizálható köztes reprezentációra alakítása. A bájtkódot telepítik a célrendszerre. A kód végrehajtása során a futtatókörnyezet fordítója fordítja azt natív gépi kódra. Ezt meg lehet fájl vagy függvény alapon tenni: a függvényeket csak végrehajtáskor szükséges lefordítani, (innen jön a „just-in-time”, éppen időben kifejezés).

A cél a natív- és a bájtkódfordítás előnyeinek egyesítése. Az eredeti forráskód feldolgozása és az alapvető optimalizálás fordítási időben történik, jóval a futtatás előtt – a bájtkódról gépi kódra történő fordítás jóval gyorsabb, mint forráskódról. A keletkezett bájtkód hordozható, nem úgy, mint az architektúrához kötött gépi kód. A bájtkódról gépi kódra fordítók megírása is egyszerűbb, mivel a bájtkódfordító elvégzi a munka nehezét.

Történelem

[szerkesztés]

A dinamikus fordítás úttörője egy kereskedelmi Smalltalk-implementáció volt a 80-as évek elején, ami ma VisualWorks néven ismert.

A Sun HotSpot Java virtuális gép implementációja a sikeres JIT-implementáció egy példája.[1] Két részből áll:

  • Egy „kliens” fordító, ami gyors fordítási sebességet biztosít a rövid életű alkalmazások számára,
  • Egy „szerver” fordítót, ami erősen optimalizált kódot állít elő hosszú életű alkalmazások számára.

A felhasználó választhat a dinamikus fordítók közül az adott alkalmazás sajátosságainak megfelelően.

A Microsoft is egy JIT-alapú rendszert választott a .NET-környezet számára, valamint a Crusoe processzor is hasonló módszert használ hardver szinten. A Parrot virtuális gép is JIT-et használ. A Psyco egy Python JIT-fordító.

Kapcsolódó szócikkek

[szerkesztés]

Jegyzetek

[szerkesztés]

Források

[szerkesztés]
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy