In Vor­le­sun­gen hört man ja ab und zu Hor­ror-Geschich­ten über „die Rea­li­tät”™. Man lacht dann meist dar­über und fragt sich, ob es denn stim­men kann, das in frei­er Wild­bahn wirk­lich der­ma­ßen unglaub­lich schreck­li­cher Code exis­tie­ren kann. So blöd kann ja kei­ner sein.

Letz­te Woche habe ein sol­ches Bei­spiel erlebt, bei des­sen Code-Ana­ly­se ich minu­ten­lang nicht mehr aus dem Lachen her­aus­kam. Auch wenn Wei­nen wohl ange­mes­se­ner gewe­sen wäre.

Es ging um eine Web­platt­form, die trotz 8-Kern-Sys­tems mit 32 GB RAM kaum noch benutz­bar war auf­grund extrem lan­ger Ant­wort­zei­ten im Minu­ten­be­reich. Ein Haupt­pro­blem war eine Meho­de, die fol­gen­des gemacht hat:

  • Lade zu Beginn erst­mal alle Objek­te aus der Daten­bank in eine Varia­ble.
  • Lade, weil’s so schön ist, auch direkt alle abge­lei­te­ten Objek­te abge­lei­te­ter Tabel­len in Varia­ble.
  • Füh­re diver­se Trans­for­ma­tio­nen mit allen die­sen Objek­ten aus (deren Sinn sich mir nicht zu 100% erschlos­sen hat).
  • Fil­te­re ca. 80% der Objek­te raus.
  • Füh­re mit der ver­blei­ben­den Objek­ten wei­te­re Trans­for­ma­tio­nen durch.
  • Ermitt­le schließ­lich die Anzahl der Ele­men­te, die in der „Haupt­va­ria­ble” noch drin sind, und …
  • ver­wen­de die­sen Wert nie wie­der.

Über­flüs­sig zu sagen, dass auch die ande­ren Varia­blen über­haupt nicht ver­wen­det wer­den. Tja…

Will­kom­men in der Rea­li­tät! (Flucht­mög­lich­kei­ten sind nicht aus­ge­schil­dert.)

(Nach­trag: Zum The­ma: devopsreactions.tumblr.com, codinghumor.tumblr.com uvm.)