A InfoWiki wikiből
12. sor: | 12. sor: | ||
* [[titan:korok|Körök kezelése]] | * [[titan:korok|Körök kezelése]] | ||
* [[titan:lista|Listák kezelése]] | * [[titan:lista|Listák kezelése]] | ||
+ | |||
+ | == Listák == | ||
+ | |||
+ | Kardinális kérdés lehet a listák kezelése, mivel listák átadása más függvényeknek, rekurzív feldolgozása során a listák másolása a memóriában nem megengedett teljesítménybeli és memóriahatékonysági megfontolásokból. | ||
+ | |||
+ | Ugyanakkor amennyiben egy függvény egy lista-paramétert fogad, majd továbbadja azt egy al-függvényének, és az al-függvénye ezt a listát elkezdi 'elfogyasztani', a lista elejének felszabadítása, és az elemek garbage elemésztése szükségszerű. Figyelni kell arra, hogy a hívó függvény e közben még a teljes listát 'birtokolhatja', ami viszont ellenáll a GC-nek, akkor is, ha egyébként már a listára nincs szüksége. | ||
+ | |||
+ | A fordítás és kódoptimalizálás során ezért figyelni kell, hogy amennyiben egy függvény a listát már nem kívánja használni, de lusta kiértékeléssel azt már továbbadta egy másik függvénynek, akkor ne foglalja azt tovább, és engedje dolgozni a GC-t ha az szükséges. |
A lap 2008. december 10., 22:59-kori változata
Példaprogramok
Listák
Kardinális kérdés lehet a listák kezelése, mivel listák átadása más függvényeknek, rekurzív feldolgozása során a listák másolása a memóriában nem megengedett teljesítménybeli és memóriahatékonysági megfontolásokból.
Ugyanakkor amennyiben egy függvény egy lista-paramétert fogad, majd továbbadja azt egy al-függvényének, és az al-függvénye ezt a listát elkezdi 'elfogyasztani', a lista elejének felszabadítása, és az elemek garbage elemésztése szükségszerű. Figyelni kell arra, hogy a hívó függvény e közben még a teljes listát 'birtokolhatja', ami viszont ellenáll a GC-nek, akkor is, ha egyébként már a listára nincs szüksége.
A fordítás és kódoptimalizálás során ezért figyelni kell, hogy amennyiben egy függvény a listát már nem kívánja használni, de lusta kiértékeléssel azt már továbbadta egy másik függvénynek, akkor ne foglalja azt tovább, és engedje dolgozni a GC-t ha az szükséges.