Gebruikersavatar
Schwartz
Artikelen: 0
Berichten: 691
Lid geworden op: di 14 mar 2006, 18:14

Re: Java 7

Heb vandaag even een meting gedaan in delphi4 pascal:

2 giga aan testen op een 2.8 Ghz processor.

De if testing kwam op 41 seconden

En de case constructie kwam uit op 5 seconden.

Getest bij 20 ingangen.

Betekent dat de case met de testconstructie erbij per test gemiddeld maar 7 processorcycli nodig heeft.
Een computertaal is voor mensen, niet voor de computer.
Gebruikersavatar
Schwartz
Artikelen: 0
Berichten: 691
Lid geworden op: di 14 mar 2006, 18:14

Re: Java 7

Heb vorige geedit maar er is iets fout gegaan:

De editing is niet verwerkt en nu kan ik het niet meer editen.

De case en if is net zo snel.

De compiler heeft de lege case testen namelijk niet opgenomen waardoor er een aanzienlijk snelheidsverschil ontstond.

Haal nu een snelheid van 15 seconden voor beide op een moderne computer.
Een computertaal is voor mensen, niet voor de computer.
Gebruikersavatar
Cycloon
Artikelen: 0
Berichten: 4.810
Lid geworden op: ma 24 jan 2005, 20:56

Re: Java 7

Uiteraard zou dat nauwelijks verschil mogen geven, uiteindelijk worden beide situaties omgeschreven naar spronginstructies voor de processor.
Gebruikersavatar
Schwartz
Artikelen: 0
Berichten: 691
Lid geworden op: di 14 mar 2006, 18:14

Re: Java 7

@cycloon

Zo logisch is dat niet, de compiler kan bij een case anders gaan handelen en de test constructie optimaliseren omdat alle waarden vastliggen.

Ook heeft men de testwaarde vast staan per test.

Vond het opmerkelijk dat delphi4 (pascal) de case weglaat die geen software omvat, terwijl er wel begin;end instaat.

Deze begin en end wordt waarschijnlijk eerst verwerkt.

Ook het snelheidsverschil tussen de oude en de nieuwe computer valt erg op..

de processor van de nieuwe draait op 3.2 en de oude op 2.8..

14% sneller ongeveer...

maar de testwerking is nu gemiddeld 24 cycli was eerst. 57 cycli...

Kan men zien dat de nieuwe processoren beduidend beter presteren....

Voor het afvangen van toetsdrukken hoeft men geen hash toe te passen want een paar cycli meer maakt dan niets uit....

Wel als men vele commandos af moet vangen.
Een computertaal is voor mensen, niet voor de computer.
Gebruikersavatar
Cycloon
Artikelen: 0
Berichten: 4.810
Lid geworden op: ma 24 jan 2005, 20:56

Re: Java 7

Schwartz schreef:@cycloon

Zo logisch is dat niet, de compiler kan bij een case anders gaan handelen en de test constructie optimaliseren omdat alle waarden vastliggen.


Als je gelijkaardige testen uitvoert dan zijn alle mogelijkheden uiteraard ook vooraf bekend in je if/else constructie. Ook zal een bepaalde waarde in het register gehaald worden (die om te vergelijken) en een beetje goede compiler zou zelf moeten opmerken dat deze waarde tot de laatste else in het register moet blijven. Voor de rest zullen de instructies voor de processor grotendeels gelijklopend zijn.
Gebruikersavatar
Schwartz
Artikelen: 0
Berichten: 691
Lid geworden op: di 14 mar 2006, 18:14

Re: Java 7

IF a=10 then begin a:=a+1;software;end;

IF a=11 then begin software end;

is andere software dan

CASE A OF

10: a:=A+1;software;

11:software;

END;

en de compiler mag dit niet fout doen....

de compiler mag niet mee gaan zitten programmeren....

De delphi compiler test nu bij een case uit of alle waarden uniek zijn, dit is niet het geval bij de if;

en er is minimaal 1 case verplicht, dit vind ik een nadeel inzake programmatie (ik kan met eigen commandos software verzamelen voor in een case constructie).
Een computertaal is voor mensen, niet voor de computer.

Terug naar “Informatica en programmeren”