LauPro schreef op dinsdag 30 oktober 2007 @ 00:38:
[...]
Een profiler is een tool voor als het eigenlijk al te laat is. Het is een logisch proces en veelal heeft (projecttechnisch gezien) functionaliteit meer prioriteit dan responsiteit. Toch kan je als programmeur van veel calls op je klompen aanvoelen dat iets veel I/O gaat veroorzaken (dus afhankelijkheid en latentie).
Lees mijn 1e post in dit topic maar, daar leg ik uit dat er een volgorde zit in het toepassen van technieken. Een profiler is helemaal niet een tool voor als het te laat is, sterker het is een tool voor precies dat waar ze voor bedacht zijn: meten WAT nu eigenlijk traag is in de applicatie. Als je een checkbox uitvinkt en er gaan 1001 events af en die triggeren allemaal redraws dan zal de checkbox uitvink actie erg traag lijken, maar jij weet echt niet waarom. Een profiler zal je vertellen waar het aan ligt.
Kennelijk heb jij nog nooit de eis gehad dat je code zo snel mogelijk zou moeten zijn, immers dan had je geweten dat een profiler een essentieel onderdeel is van de gereedschappen die je gebruikt om je code zo snel mogelijk te maken. Als je niet weet WAT traag is, zul je t.a.t. maar wat aanrommelen op goed geluk.
En sorry dat ik het zeg, maar 'op de klompen aanvoelen' en aanverwante zaken: ik vind het lulkoek van de bovenste plank: ga eerst nadenken over algorithmes, dan implementeer je die algoritmes, dan ga je profilen, optimizen, profilen, optimizen, etc. en dan ben je klaar en niet eerder.
Ik denk dat de enige meest logische conclusie van dit topic is: spreek zo min mogelijk resources aan en benader dit vanuit het platform, de toolkit, applicatie en de user.
Nee, dat is dus de VERKEERDE conclusie. Ten eerste zeg jij niets over het te kiezen setje algoritmes, wat het leeuwendeel van je optimalisatie inhoudt, en ten tweede zeg jij niets over meten. Wat uit de losse pols nadenken over welke code nu sneller zou kunnen en hoe dat dan met truuks op de vierkante millimeter moet worden rechtgeknoeid... dat heeft echt geen enkele zin. Dan krijg je discussies als 'gebruik een for ipv een foreach, want die is ietsje sneller'.
Het enige punt dat ik jou wil geven is de user-perceptie van snel/traag en dat is een vaak vergeten ding. Splashscreens zijn daar een goed voorbeeld van: als je een traag startende app geen splashscreen geeft dan gaat de user denken "hij hangt!" of "wat traag!", maar als je er een splashscreen in stopt is het ineens een normaal iets.
Verwijderd schreef op dinsdag 30 oktober 2007 @ 02:38:
De hele clou van het verhaal blijft toch dat mensen gewoonweg duurder zijn dan machines, en dat het absoluut geen zin heeft om je tijd in al te veel optimalisaties te steken. De oplossing voor te trage applicaties is bijna overal: betere hardware. Niet uit luiheid, maar gewoon omdat het goedkoper is.
Ja, wel uit luiheid. Veelal is het optimaliseren van een applicatie helemaal niet zoveel werk, immers je had al VOORAF de snelste algoritmes uitgekozen, toch?
Dus als blijkt dat de applicatie gewoon een brak traag design heeft, dan is het een fout van de eerste orde, en in de volksmond noemt men dat gewoon prutswerk. Nee, inderdaad, prutswerk sneller maken levert nog steeds prutswerk op, dan kun je beter veel hardware naar binnenschuiven om trage boutsoftware toch nog wat redelijk te laten draaien, maar ik vind dat de developers die dat overkomt zich dood moeten schamen.
De huidige hardware is zo intens rap dat het echt moeilijk is een trage applicatie te bouwen. Mensen realiseren zich het niet echt, maar 10 jaar terug waren de duurdere servers uitgerust met pentium 200's en die draaiden ook de backoffice van het bedrijf, dus waarom moeten daar nu 4 socket quad core xeon's worden neergezet voor hetzelfde? Om te verbloemen dat het clubje consultants toch niet zo goed bleek als hun dure pakken + leasebakken deed voorkomen?
En ja, uiteraard moet je wat fatsoenlijk programmeren, maar grof genomen is optimaliseren zelfs nadat de applicatie af is verspilde tijd. Zelfs in de uiterst tijdskritische bankwereld is de oplossing voor een te trage app niet aan de app gaan sleutelen, maar ze naar de z-series schruiven

Nee die smiley helpt je niet, ik vind de bovenstaande quote een treurige opmerking. Het punt is nl. dat het aantoont dat men het kennelijk normaal vindt dat bv bij de belastingdienst 4200 (!) mensen werken op de it afdeling die 400 miljoen (!) euro per jaar opvreet en dat ze dan NOG niet in staat zijn programma's te maken die de ene database met de andere koppelen.
Dan moet je niet roepen dat wanneer het niet performt dat IBM's grote dozen het maar moeten opvangen, nee, dan moet je je ogen uit je kop schamen dat je jezelf nog software engineer durft te noemen. Profilen van een applicatie is iets dat hoort bij development, het is een onderdeel van het nakijken of je wel goed werk hebt afgeleverd. Een profiler toont nl. nog meer aan dan alleen trage troepcode: het toont ook aan dat bv sommige delen van je applicatie HEEL erg vaak gebruikt worden en andere delen juist helemaal niet of nauwelijks. Dat is essentieel inzicht in hoe een applicatie onderhouden moet worden en waar in de toekomst problemen verwacht kunnen worden (10 tegen 1 in het gedeelte wat erg vaak gebruikt wordt).
[
Voor 35% gewijzigd door
EfBe op 30-10-2007 09:42
]