Undgå suboptimering - både i din kode og alle andre steder!

Viden kan både være en lyksagelighed og en hæmsko, alt efter hvordan man bruger den.

Suboptimering når man koder
Et eksempel er når man sidder og koder, og måske går efter den på papiret optimale løsning i første hug.
Med andre ord, så begynder man måske at performance optimere på delelementer af koden lang tid før man har det fulde overblik over hvad løsningen samlet kommer til at indeholde.

Umiddelbart lyder det måske smart, løbende at performance optimere, ekstra performance er jo altid godt, og hvorfor gøre noget til sidst som kan gøres med det samme?

Den aller, aller vigtigste grund er, at det på forhånd er meget svært at sige præcis hvilken del af koden, eller projektet som helhed, der vil være flaskehalsen: Måske er det en funktion der kaldes ofte, måske er det en gennemsigtig gradient, måske er det et dårligt indeks på databasen, måske måske måske.

4 timer brugt på optimering et sted giver måske kun en samlet hastighedsforøgelse på 1%, mens 1 time brugt et andet sted kan fordoble performance. Det har jeg i hvert fald selv været ude for.

Det er klart, at det er godt at have performance overvejelser med fra første færd, og har man fundet en ny måde at gøre en given ting på, som både er lige så hurtig at kode og som stadig producerer overskuelig kode, så er det naturligvis oplagt at bruge den.
Men, mærker man at man begynder at lave krumspring for at optimere, så gem det til senere.

Suboptimering andre steder
Men, det er ikke kun når man koder at man kan være tilbøjelig til at optimere de forkerte ting, også uden for computerens verden kan der være gevinster at hente.

Prisjagt
Forestil dig f.eks. at du skal ud og købe en ny dvd-afspiller, og du har fundet ud af hvilken model det skal være.
Hvor lang tid skal du så bruge på at lede efter den billigste pris?

Hvis der er tale om noget til under 1000 kroner, så er svaret: Ikke ret længe.
Bruger du eksempelvis 1 time og opnår at spare 150 kr, så er det jo en underskudsforretning hvis den samme time kunne have givet dig en indtægt på 300 kroner.

Parkeringsjagt
Et andet eksempel kunne være, at du arbejder i udkanten af København og skal til et møde inde i byen.
Skal du så tage din egen bil eller en taxa?
Husk på, det tager tid at finde en parkeringsplads (tid=penge) og det koster også noget at parkere.

Svaret vil afhænge af mange variabler, men selvom man har egen bil er det en overvejelse værd.

Aftensmaden
Lad os sige at du står for aftensmaden og skal lave spaghetti med kødsovs.
Du ved at magert kød er sundt og at økologi er godt for dyrene, så derfor bruger du 35 kr. på noget godt fars.
Men samtidig tager du måske den første og bedste pasta til 5 kr. og det på trods af at man i løbet af måltidet rent faktisk spiser mere pasta end kød.

Spørgsmålet er jo så, hvor meget du får ud af at der er tale om noget bedre, eller om det ville være bedre at bruge 25 kr. på kød og 15 kr. på pasta?

Igen, så kender jeg ikke svaret, men det er værd at tænke over.

Pointen bag alle eksemplerne er, at man ikke skal fokusere på den enkelte handling, men på det store billede.
Det er nemlig den eneste måde at undgå suboptimering.



Del:These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • digg

3 kommentarer

  1. Asger siger: (4. juli 2007 kl. 17:26 )

    Hehe… Det er jo ren Bjørn Lomborg!

  2. Mads Buch Stage siger: (5. juli 2007 kl. 09:05 )

    @Asger: Sagt af en person ville det være en kompliment, fra en anden person en decideret tilsvining, men jeg satser på du mener det af det gode ;-)

  3. Asger siger: (5. juli 2007 kl. 10:05 )

    Ja, selvfølgelig… :)

Skriv en kommentar