[elektro] A szokásos C kezdő kérdések

SZIGETI Szabolcs szigiszabolcs at gmail.com
Thu Jan 31 10:50:13 CET 2013


Hali!

Nincs ezzel semmi baj, ha megfelelően definiálva van. Ahogy ugye mondjuk az
IP protokollban is definiált, hogy mi a bájtsorrend stb. A szívás akkor
van, ha az ember csak azt hiszi, hogy definiált. Tehát mondjuk azt írja,
hogy a dróton ilyen olyan struct megy át.
Aztán ott a meglepetés, amikor két eszköznek beszélgetni kell egymással és
akár csak azt történt, hogy az egyik szoftverét egy újabb verziójú C
fordítóval fordították, ami máshogy pakolja, paddeli az adatokat. Lévén,
ezt legálisan megteheti. Többek között ezért is veszélyesek az ilyen
bitbűvészetek.

A sebesség- meg méretkritikus dolgokról pedig annyit, hogy Donald Knuth
(aki nem ismeri, google) mondta, hogy a korai optimalizálás minden rossz
forrása.
Szinte csak olyan esettel találkoztam, ahol a magabiztos programozó
kijelentette, hogy azért nem szabványos, szép, olvasható megoldást választ,
mert itt gyorsnak6kicsinek kell lennie a kódnak, és a szabvány megoldás nem
lesz az. Persze kijelentve mindezt mindenféle analízis és mérés nélkül.
Aztán amikor nagy nehezen sikerült rábeszélni egy profilingra, akkor
kiderült, hogy halálra optimalizálta a teljes futási idő 0,1%-ért felelős
kódrészt, ami így 25%-kal gyorsabb lett. vagyis nyert az egész futási időn
0,025%-ot. És kerek szemekkel nézte, hogy volt egy függvény, amiben 50%-ot
ment a program. Ezt pár egyszerű fogással durván ötödére lehetett faragni.

Szóval először működjön funkcionálisan jól, a kód legyen olvasható,
hordozható, karbantartható. Aztán mérünk és megnézzük, hogy tényleg lassú
vagy nagy-e és ha igen, akkor a mérés alapján megnézzük, hogy hol kell
faragni. Itt jöhet aztán a bitvadászat, de rendszerint nagyon kevés esetben
kell vadászni, primitív dolgokkal (pl. egymásba ágyazott ciklusok ki/meg
fordítása, jobb adatszerkezet, stb.) hatalmasakat lehet nyerni. De ehhez
mérni és elemezni kell.

Szabolcs



2013. január 31. 9:05 Hofferek Attila írta, <hofi at soka.co.hu>:

> 2013.01.31. 9:00 keltezéssel, Móczik Gábor írta:
> > Bár kényelmes és jól olvasható lenne struct-tal fejléceket deklarálni és
> > ezt egy utasítással kiküldeni, elég sok a szívás vele.
>
> Nem feltétlen hátrány az absztrakció, ha a kiküldő utasításban ezt
> lekezeled,
> és ha tömb, ha struct, ha union, ha kutyafüle, képes vagy kiküldeni.
>
> -----------------------------------------
>           elektro[-flame|-etc]
>


More information about the Elektro mailing list