Performance Lab #1 : Try-Catch versus If

Meten is weten

Een van de belangrijkste kernmerken van programmeren is het doorlopende proces van keuzes maken. Een puzzel waarbij je telkens een oplossing moet bedenken voor een bepaald probleem, en er bestaan altijd meerdere manieren waarop je een doel kunt bereiken. Elke manier kent wel bepaalde voordelen en dat maakt het nu juist zo moeilijk om te kiezen.

In de dagelijkse praktijk probeer ik mijn keuzes te maken op basis van logisch nadenken en ervaring. Ik kies voor een bepaalde oplossing waarvan ik veronderstel dat die de meeste voordelen biedt. Ik weeg meerdere aspecten tegen elkaar af, maar toch blijf ik vaak twijfelen over mijn beslissing. Heb ik wel de juiste veronderstelling gedaan?

Dan kan het zijn dat ik besluit om alsnog een testapplicatie te bouwen om te controleren of mijn ideeën over de voor- en nadelen kloppen. Dit kan er voor zorgen dat ik me neer kan leggen bij mijn keuze of dat ik besluit een verbetering aan te brengen. In beide gevallen draagt het bij aan een geruststelling van mijn gemoed.

Als mijn twijfels zijn weggenomen, voel ik me direct beter. Het laat me eindelijk los en ik gooi de test op de grote hoop waar het een stille dood sterft. En telkens als zich weer een dergelijk probleem voordoet en de twijfels weer de overhand nemen, bouw ik opnieuw een testapplicatie om me zekerder te voelen.

Met deze werkwijze doe ik me zelf en eigenlijk ook mijn medemens wel tekort. Elke keer weer opnieuw dezelfde soort afwegingen maken en de resultaten ervan weggooien. Ik heb me voorgenomen om meer structureel om te gaan met het bouwen van testapplicaties door de resultaten te documenteren, te archiveren en te publiceren, zodat ik zelf en mijn collega’s het resultaat kunnen hergebruiken. Uiteraard nodig ik iedereen uit om hieraan een bijdrage te leveren.

Het testperspectief

Belangrijk bij het maken van de juiste keuzes is het bepalen van het doel. Soms wil je alleen maar een oplossing met de beste performance, soms moet een oplossing ook inzetbaar zijn in een ander project en wil je een herbruikbare oplossing. Veel voorkomend is de onderhoudbaarheid: “Hoe kan ik op een elegante wijze mijn doel bereiken?”. Dit soort doelstellingen zijn vaak tegenstrijdig en toch wil je ze combineren. Daarom zal ik proberen aan te geven vanuit welk perspectief een bepaalde test is opgezet.

Appels met peren vergelijken


Bij het testen van verschillende code constructies begeef ik me per definitie op glad ijs. Ik heb lange tijd software ontwikkeld voor zowel de Mac als de PC. De software werd op beide platforms door verschillende runtime engines gedraaid. Op het ene platform was het if-statement sneller dan het case-statement, op het andere platform was het test resultaat precies andersom. Simpel weg omdat de implementatie van beide runtimes anders was.

Een andere ervaring die ik heb opgedaan met performance tests is dat er altijd wel een kantelpunt bestaat waarbij het voordeel de ene of de andere kant uitwijst. Ik maak mij dan ook geen illusie dat een test een definitief bewijs vormt voor de juiste keuze. Het maakt me echter wel bewust hoe bepaalde keuzes zich gedragen.

Try-catch versus if

 

Blind vertrouwen


Het try-catch mechanisme is zo iets moois dat ik bijna uit het oog ben verloren dat er wel degelijk kosten aan verbonden zijn.

De meeste objecten in .NET werpen diverse soorten excepties op als er iets mis gaat. Door met try-catch te werken kun je zeer compacte en heldere code schrijven, nl. door de pure ‘goed-situatie’ uit te schrijven in het try-block en de pure ‘fout-situatie’ in een catch-clause. Dit levert goed leesbare en dus onderhoudbare code op, omdat je je code niet hoeft te vervuilen met allerlei soorten check’s.

Ik had ooit gehoord dat .NET heel slim omgaat met try-catch en dat het nauwelijks performance zou kosten. Hierdoor heb ik me laten leiden door de voordelen van de elegante schrijfwijze. Ik begon zelfs try-catch te gebruiken voor situaties waarbij ik een waarde in een collectie zoek en op de IndexOutOfRangeExceptie een default waarde bepaal.

Effe checken


Toch bleef het door mijn hoofd spoken dat er een proces op gang gebracht zal moeten worden als je een try start. En het lijkt me logisch dat als er iets mis gaat, er exceptie objecten moeten worden gecreëerd. Kortom, ik kon niet langer leven met het idee dat ik niet op z’n minst één keer zou meten wat try-catch aan performance kost.

Ik ben mezelf dankbaar dat ik even de tijd heb genomen om een test te bouwen. Want ik weet wel waar ik een enorme performance winst kan bereiken in mijn applicaties. Kijk naar de test, het verschil is gigantisch.

Bewust kiezen

De documentatie van Microsoft zegt het volgende; “Try...Catch...Finally Statements
provides a way to handle some or all possible errors that may occur in a given block of code.”

Let wel, ik blijf try-catch echt wel veel gebruiken. Maar het bewust kiezen zit in het verschil; “some or all”. In situaties waarbij er eigenlijk maar één of enkele zaken zijn die mis kunnen gaan, zal de keuze voor het if-statement absoluut lonen.

 

Smit_PerformanceLab_1.zip (50 kb)

 

 


 

Commentaar van anderen:
bags op 9-7-2010 om 11:34
We can buy anything we like Loewe replica, including copies replica Louis Vuittonof chanel bag and hermes copies in our desk handbag don't leave theirMarc Jacob replica homes. We can enjoy shopping our favorite Marni handbags reproductions, replica Montblancwe stayed in replica movado we comfortable room. We don't need replica Patek Philippe to brave the harsh winter weather, drive long distances, replica Dior handbags. The life replica Dolce & Gabbana handbagsreally simplified network. All the products replica Dooney & Bourke handbags we need will be Dior handbags delivered in us.the shop to another person gets Dolce & Gabbana handbags the best deal. We can find a lot of quotation and productsDooney & Bourke handbags in many online store discounts.
replica handbags op 16-7-2010 om 9:58
If you are going tocheap fendi handbags purchase one prada Louis Vuitton replica, I also recommend you celine bagsto explore the online designerGraham watches store to find the high quality Ferrari watchesbags with the lowest pricechopard watches in the market. Treat yourself designer handbagsa new designer handbag and makebalenciaga handbags yourself stay in style.The exclusive U-boat for saletimepiece goes on an alligator Patek Philippe watchesor galuchat strap, equipped with a Baume & Mercier for saledeployment clasp, and guarantees supreme on-the-wristBell & Ross for sale comfort and finest looks.tod's handbagVictor Wilson is a dedicated writer showingdesigner watches his opinions of designer dolce & gabbana handbags for people who are seeking forMulberry handbags perfect designer bags.designer Breguet replica Style, class and taste are conveyed by wearingPiaget for sale a trendy designer handbag Piaget for salebut the pricing can be gucci replica handbagsout of many people's budgets Montblanc for salein today's economy.
Tiffany jewelry op 6-8-2010 om 4:17
Tiffany jewelry manufacturers directory,cheap jewelry - lots of registered importers and exporters. Cheap tiffany jewelry manufacturers, Tiffany & co jewelry suppliers, tiffany jewelry wholesales, Tiffany Watches,exporters, sellers, traders and gold tiffany jewelry Distributors from China and around the world at www.goldtiffanyjewelry.com Tiffany jewelry exporters, Tiffany Accessories, Tiffany Bangles, Tiffany Bracelet, Discont Tiffany Bracelet, Discount Tiffany Cufflinks, Fashion Tiffany Earring, Tiffany Necklaces , Discount Tiffany Necklaces, Tiffany Rings, Tiffany Watches
ChristianLouboutin op 18-8-2010 om 3:19
Christian Louboutin Shoes, Christian Louboutin Shoes, Christian Louboutin, Wedding Shoes, Christian Louboutin The luxury Replica Watches is called a luxury because of its limited number of limited edition hand-made and a long period. Christian Louboutin Shoes, Wedding Shoes, Discount Christian Louboutin, Louboutin Shoes, Christian Louboutin Sale because it had these features before they sparked the desire of customers to purchase financial writer Wu Xiaobo said that when living in an era of fear. Discount Christian Louboutin, Louboutin, Sale Christian Louboutin, Louboutin Sale, Chanel Shoes, Alexander Wang Shoes uncertainty is also a productivity less means scarcity, scarcity means that for less than the demand, Manolo Blahnik Shoes, Louboutin Sale the face of this situation a few first blessing up the idea because of all the bizarre transient also had a weird overlay acts it. Louboutin Shoes, Christian Louboutin Discount, Louboutin, Christian Louboutin Sale, Buy Christian Louboutin It is not hard to understand Christian Louboutin Pumps in Japan to open its first flagship store when the customer line from 3.2 kilometers of the singular scene, in fact line up is in itself a behavior so customers will be happy this endless. YSL Shoes, Herve Leger Dress, Herve Leger V Neck Dress, Herve Leger Bandage Dress, Herve Leger Dress, Herve Leger V Neck Dress ome people commented that the Japanese auto exports to earn the franc by the French only by a Christian Louboutin to easily recover the cost of coming.
Geef feedback:

CAPTCHA image
Vul de bovenstaande code hieronder in
Verzend Commentaar