"Honnan tudod hogy hatékony a kódod, ha nem tudod hogy mi a komplexitása (tudod a nagy O betűs) a felhasznált keretrendszernek/libeknek, stb.?"
Először is don't argue, benchmark.
Másrészt a nagy-O jelölés haszontalan sok esetben. Ugyanis sok műveletet, ami valójában nem elemi, eleminek feltételez. Úgy persze könnyű azt mondani, hogy az algoritmusom n^-es bonyolultságú. Miközben nem az, mert maga az algoritmus által felhasznált "elemi" lépés baromira nem elemi.
Harmadrészt: a való életben (és minden mérnöknek) a lényeg, hogy egy művelet mondjuk 95%-ban befejeződjön 150msec-en belül. És nem érdekes ilyenkor, hogy n^3 vagy n^2-es algoritmussal, vagy n lg n-essel írod meg, mert az input mérete amúgy konstans és a szoftver teljesíti a követelményeket. Senki nem fogja neked kifizetni azt a melót, hogy kielemezd a futásidőt, ha amúgy a futásidő nem probléma.
Nagyon szeretem, amikor a C kóderek azt állítják, mintha minden kód a világon hard-realtime, 2 kb memórián és egy 4 kilohertzes CPU-val kéne, hogy lefusson. Na, ezek az emberek még nem láttak business kódot, ahol a lényeg mondjuk 45 alrendszer és 25 vendor szoftvereinek az integrálása. Na, ott baromira nem az lesz a lényeg, hogy a keretrendszernek mi a lefutása.
Amúgy te a napi munkád során dokumentálod-e a futásidőt O, Omega(), o() és omega() jelölésekkel, worst/best-case analysissesl?