Az informatika térhódításával egyre nagyobb szerephez jutnak a magasabb szintű fejlesztési környezetek, mint a .NET és a Java. Eme platformokon a fejlesztés egyszerűbb, kényelmesebb, gyorsabb, ezekből kifolyólag pedig olcsóbb is. Ezzel párhuzamosan háttérbe szorul az optimalizáció, a menedzselt virtuális gépben történő futtatás teljesítménye gyengébb, mint egy natív alkalmazásé.
Mind a fejlesztő, mint a fordító viszonylag kevés hatással van a program sebességére, gyakori, hogy a fejlesztők profilerek segítségére szorulnak egy‐egy szűk keresztmetszet elhárításakor. Sok esetben a teljesítménybeli hátrány nem probléma, mivel a processzorok is egyre gyorsabbak, illetve az igazán sebességkritikus alkalmazások még mindig C/C++ nyelven íródnak, de ez változni látszik. Létezik már .NET‐re írt operációs rendszer (Singularity) és Java bájtkódot futtató processzor is.
Időszerű tehát, hogy olyan újabb optimalizációs módszerek után kutassunk, amik a menedzselt platformokon is életképesek. Egy ilyen módszer a kódgenerálás, ami azt jelenti, hogy egy általános érvényű algoritmusból futtatás előtt egy optimálisabb verziót generálunk úgy, hogy adott paraméterek konkrét értékeit vagy egyéb extra tudást is figyelembe veszünk. A mai fordítók egy forráskódból egy binárist készítenek, viszont ha megengedjük, hogy eltérő feltételekhez, argumentumokhoz alkalmazkodva több példány létezzen, amelyeket dinamikusan, igény szerint generálunk és használunk, korábban nem tapasztalt előnyökhöz jutunk. Már létező implementációk vizsgálata alapján nagyon sok utasítást, feltételes elágazást megspórolhatunk, ez menedzselt esetben is számottevő, és ha egy generált példányt elég sokszor felhasználunk, akkor hosszú távon fél vagy akár egy nagyságrendnyi gyorsulást is elérhetünk. A kódgenerálás nyilvánvaló hátránya, hogy a program mérete a többszörösére növekszik, de ez nem probléma, hiszen a tárhely jelenleg sokkal olcsóbb, mint a számítási teljesítmény. Az igazi probléma, hogy még csak nagyon specifikus, egyedi implementációk léteznek, és ezek bonyolultak, nehezen karbantarthatóak: főleg assembly szinten vagy stringben tárolt kódsablonok alapján dolgoznak, és az ilyen kódokat nagyon nehéz elkészíteni, verifikálni, tesztelni és módosítani is.

