String Pool

A karakterlánc - készletezés kétféle karakterlánchoz kapcsolódó fordítóoptimalizálásra utal : 

  1. A kód mennyiségének csökkentése a különböző modulokból származó azonos sorok kombinálásával.
  2. Lusta karakterlánc-hozzárendelések referenciaszámláló segítségével ( másolás-írás ).

A különböző modulokból származó karakterláncok kombinálása

A forráskód feldolgozása során a fordítónak minden literális karakterláncot el kell helyeznie a felügyelt modul metaadatai között. Ha egyetlen sor többször is megjelenik a forráskódban, az összes ilyen sor metaadatba helyezése az eredményül kapott fájl növekedését eredményezi.

A kód növekedésének megakadályozása érdekében sok fordító (beleértve a C# fordítót is) csak egy literális karakterláncot tárol a modul metaadataiban. A fordító a forráskódban erre a karakterláncra vonatkozó összes hivatkozást lecseréli a metaadatokban szereplő példányára. Ez jelentősen csökkenti a modul méretét. A módszer nem új - ez a mechanizmus már régóta létezik a C / C ++ fordítókban . A Microsoft C/C++ fordítójában ezt string pooling-nek hívják. Ez egy másik eszköz, amely lehetővé teszi a karakterláncok feldolgozásának felgyorsítását.

Lusta karakterlánc-hozzárendelések

A karakterlánc általában egy nagy objektum , amely működéséhez nagy memóriablokkot igényel . Ez az optimalizálás csak szükség esetén foglal memóriát a karakterláncok számára, lehetővé téve, hogy több változó ugyanarra a karakterláncra mutasson. Csak ha az egyik változó tartalma megváltozik, a karakterlánc másolásra kerül.

Hasonló optimalizálás létezik a szemétgyűjteményű nyelvekben abban a formában, hogy a karakterlánc egy megváltoztathatatlan objektum, és a hozzárendelés a=bnem hoz létre új karakterláncot. Ennek a megoldásnak az a hátránya, hogy a programozónak ismernie és használnia kell egy belső karakterlánc-építő mechanizmust, mint például a StringBuilder( Java ).

Irodalom

Linkek