22.11.2013 Views

Dankwoord - martes

Dankwoord - martes

Dankwoord - martes

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!