Programok sebességnövelése
kategória: Hírek — forrás: Computerworld — dátum: 2009-05-12 12:10:09Egy gyakran idézett és igaz mondás szerint az optimalizálás nevében követték el a legtöbb bűnt a szoftverek minőségével szemben.
Nem tudom, megfigyelték-e már, hogy a számítástechnikával foglalkozó emberek szeretnek megfellebbezhetetlen kinyilatkoztatásokat tenni. (Ez is egy ilyen volt, jegyzem meg tüstént önkritikusan.) Ugye elég a UNIX- és Windows-pártiak ádáz acsarkodására utalnom itt, melynek során a legmegalapozottabb érv rendszerint egy sátáni kacaj, amikor a másik fél imádatának tárgyát akár csak szóba hozza. Ki lehet próbálni: előbb suhan át egy pingvines pólót viselő egyén arcán a megvető lesajnálás, és fejezi be keze a legyintést, mint hogy eljutnánk annak kimondásához, hogy dows.
Egyszóval, az IT-brancsban sok a hívő, akár hiszik, akár nem, és van egy Szent Grál, melynek örökös keresése az egyik tábor szerint az egyedüli igaz cél, a másik szerint viszont okafogyott gyagyás hobbi: a sebességnövelés, alias optimalizálás, alias teljesítménynövelés. A sebességpárti szurkolók "az nem elég gyors" ordítással vetnek el megbízható - és persze nagyon gyakran épp elég gyors - termékeket, a másik lelátón ülők pedig fújolni kezdenek, amint sebességmérés vagy optimalizálás kerül szóba, mondván, hogy attól csak elromlik minden, ami eddig működött és különben is vegyünk gyorsabb vasat, oszt kész.
Miért oly korszerű, ha annyira idejétmúlt?
Az egyik érv a sebességnöveléssel szemben az, hogy felesleges, mert a mai gépek már oly gyorsak, mint a villám. "Asztalra VISTA, baby!" - szoktam erre mondani, mire ez elindul, addig kétszer is lebeszéllek erről a mániádról, és még a békepipát is elszívjuk utána. Vagyis a Tétel: minden alkalmazás mindig túlnő minden hardver minden fejlesztésén; embernek, programnak már csak az a természete, hogy addig nyújtózkodik, amíg a takarója ér. És utána még egy picit.
Ezért elmondhatjuk, hogy a szoftverek sebességnövelése igenis szükséges és korszerű, mert az elkényeztetett gyermek módjára minden erőforrást felhabzsoló alkalmazások, operációs rendszerek, adatbázis-kezelők mindig térdre kényszerítik a legújabb hardvereket is, ha nem teszünk ellene valamit.
Miért oly káros, ha annyira hasznos?
A másik érv az optimalizálással szemben az szokott lenni, hogy káros, mert jól működő és áttekinthető programokból ennek során kusza, hibás, változtathatatlan rémség jön létre.
És most jön a meglepetés: ez bizony így igaz. Egy gyakran idézett és igaz mondás szerint az optimalizálás nevében követték el a legtöbb bűnt a szoftverek minőségével szemben. Ha átgondolatlan módszerekkel látunk hozzá a sebességnöveléshez, az illető szoftver hihetetlenül gyorsan és visszavonhatatlanul képes átalakulni valami rémes rejtvényszörnyeteggé. A meggondolatlan optimalizáló olyan, mint a varázslóinas Goethe meséjében. Frankenstein. Gólem. A nép ellensége. Kútmérgező.
Miért oly hasznos, ha annyira káros?
Mert a szakszerűen végzett optimalizálás felfedi és eltávolítja a felesleges műveleteket.
Mert a szűk keresztmetszetek keresése közben alaposan végigvizsgáljuk a programot, és ezenközben még rejtett hibákra is lelünk.
Mert az optimalizálhatóság, paraméterezhetőség érdekében úgy alakíthatjuk át a programot, hogy a körülményekhez igazodva - akár futás közben - cserélhetővé váljanak az algoritmusok, adatszerkezetek.
Utáljuk, vagy szeressük?
Nyilván várja már az olvasó az "attól függ" választ, és igaza van, tényleg ez következik. Amire persze rögtön riposztozik: mitől is? A szakszerűségtől, kéremszépen. A szakszerűen végzett optimalizálás kifejezetten hasznos - ez így persze csak egy semmitmondó általánosság, úgyhogy töltsük is meg rögtön tartalommal, mielőtt az olvasó földhöz vágja ezt a cikket. Ami különösen akkor lenne rá nézve is sajnálatos, ha online olvassa.
Az első lépés mindig a szűk keresztmetszet(ek) megkeresése legyen. Ez, bár triviálisnak tűnik, mégis túl gyakran elmarad. Nem szabad fejlesztés közben túl hamar az optimalizáláson gondolkodni, bármily csábító is az ötlet...