Dankwoord - martes
Dankwoord - martes
Dankwoord - martes
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
44 HOOFDSTUK 3. METHODOLOGIE<br />
Wat wij met dit voorbeeld willen meten is de verhouding van de twee aanpakken ten opzichte<br />
van elkaar. In de naïeve aanpak hebben we op iedere uitvoering van een publieke methode<br />
alle gedenieerde klasse-invarianten getest. Bij de intelligente aanpak hebben we maar een<br />
deelverzameling van alle klasse-invarianten gecontroleerd. Deze deelverzameling is afhankelijk<br />
van de opgeroepen operatie.<br />
Ons lopend voorbeeld bestaat uit vijf klassen met een totaal van 21 klasse-invarianten.<br />
Om betrouwbare uitvoeringstijd te verkrijgen hebben we de testen 100000 keer in een lus laten<br />
draaien. Op deze manier verkrijgen we een acceptabele meting voor onze testverzameling.<br />
Het experiment wordt uitgevoerd op een PC 1.4 Ghz machine met 512 MB RAM geheugen<br />
en Windows XP als besturingssysteem.<br />
De resultaten wijken niet veel van onze veronderstellingen af. We hebben een verschil in<br />
uitvoeringstijd van 1.6 keer meer bij de naïeve aanpak dan bij de intelligente aanpak gemeten<br />
op voorwaarde dat onze methoden geen computationeel intensieve implementaties bevatten.<br />
De gemeten factor van 1.6 kan sterk variëren. In ons experiment is het nagaan van de klasseinvarianten<br />
de dominante operatie in een methode en vandaar komt deze versnelling tot 40<br />
percent bij de intelligente aanpak. Indien onze methoden computationeel intensieve algoritmes<br />
bevatten of grote bestanden aan lezen of wegschrijven zijn dan wordt het nagaan van<br />
consistentie van klasse-invarianten niet meer de dominanten factor. Dan verwachten we bijna<br />
gelijke metingen te krijgen zowel voor de intelligente aanpak als voor de naïeve aanpak.<br />
aanpak gemetentijd met init gemetentijd zonder init<br />
naïeve 8.6 sec 3.4 sec<br />
intelligente 5.2 sec 0.4 sec<br />
Tabel 3.7: De resultaten van de evaluatie van naïeve en de intelligente aanpak<br />
Indien we de initialisatie van de objecten en de oproep van constructoren buiten de lus doen,<br />
hebben we een factor van 7.9 gemeten. In dit geval is de naïeve aanpak tot bijna 8 keer<br />
trager dan de intelligente aanpak. Dit is te wijten aan het feit dat in JAVA de initialisatie<br />
van objecten en de oproep van constructoren veel tijd vraagt. Indien we de initialisatie buiten<br />
de lus laten dan wordt duidelijk dat de dominante factor het nagaan van voldoening van<br />
klasse-invarianten wordt en bijgevolg verkrijgen we deze factor van bijna 8.<br />
Ons voorbeeld bestaat maar uit een model uit 5 klassen en 21 invarianten. In totaal zijn er 8<br />
publieke operaties opgeroepen. We verwachten dat het toepassen van de intelligente aanpak<br />
bij grootschalige systemen toch een voordeel over de naïeve aanpak zou hebben.<br />
De code van ons experiment is terug te vinden op de CD horende bij deze thesis.