Laufzeitmessung Prozedur
-
- Beiträge: 33
- Registriert: Sa 8. Jun 2013, 19:45
Laufzeitmessung Prozedur
Moin,
ich bekomme bei der Laufzeitmessung einer Prozedur bei mehrmaligen Aufruf unterschiedliche Werte. Von z.b. 25+-3 ms springt der Wert dann auf 35 +-3 ms.
Die Laufzeitmessung habe ich mit Queryperformance programmiert.
Wie bekomm ich denn konstantere Werte?
Grüße
ich bekomme bei der Laufzeitmessung einer Prozedur bei mehrmaligen Aufruf unterschiedliche Werte. Von z.b. 25+-3 ms springt der Wert dann auf 35 +-3 ms.
Die Laufzeitmessung habe ich mit Queryperformance programmiert.
Wie bekomm ich denn konstantere Werte?
Grüße
-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
Re: Laufzeitmessung Prozedur
Du könntest das Multitasking deaktivieren (Stichwort: Single user mode). Oder einfach mehrere Werte nehmen und mitteln.
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Laufzeitmessung Prozedur
Bei modernen Prozessoren und Desktop-Betriebssystemen kann die Laufzeit nur annähernd bestimmt werden (z.B. Prozedur 1 Mio Mal aufrufen und den Durchschnitt bilden).
Je nachdem was sonst noch auf dem Rechner geschieht, kann z.B. die Effizienz des Caches sehr schwanken.
-Michael
Je nachdem was sonst noch auf dem Rechner geschieht, kann z.B. die Effizienz des Caches sehr schwanken.
-Michael
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Re: Laufzeitmessung Prozedur
Die CPU springt in den Energiesparmodus, wenn sie nicht ausgelastet ist. Es braucht ein paar Millisekunden, bis sie die volle Leistung abrufen kann.Eradikator hat geschrieben: Wie bekomm ich denn konstantere Werte?
Wenn Du allgemein prüfen möchtest, weilche Prozeduren die meiste CPU-Zeit benötigen, kannst Du gprof verwenden. Dazu musst Du in den Linker-Einstellungen von Lazarus das zugehörige Häckchen setzen. Zur genauen Bedienung musst Du mal googeln.
Viele Grüße, Euklid
-
- Beiträge: 33
- Registriert: Sa 8. Jun 2013, 19:45
Re: Laufzeitmessung Prozedur
Hallo,
Wie lässt sich denn das Multitasking abschalten? Ich hab es über den Taskmanager und Systemsteuerung versucht und habe keine Möglichkeit gefunden.
gprof werde ich heute mal testen.
Danke euch.
Wie lässt sich denn das Multitasking abschalten? Ich hab es über den Taskmanager und Systemsteuerung versucht und habe keine Möglichkeit gefunden.
gprof werde ich heute mal testen.
Danke euch.
-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
Re: Laufzeitmessung Prozedur
Das war eher als scherzhafte Bemerkung gedacht, die den Grund der Varianz verdeutlichen soll. Unter Linux kann man den "Runlevel" ändern, Windows bietet so etwas nicht. Zähl einfach, wie oft deine Routine durchlaufen wird, addiere die jeweiligen Messungen und wenn es um die Ausgabe geht, dann dividiere die Summe durch die Anzahl der Messungen.Eradikator hat geschrieben:Wie lässt sich denn das Multitasking abschalten?
Zuletzt geändert von Scotty am Mo 12. Aug 2013, 10:58, insgesamt 1-mal geändert.
-
- Beiträge: 33
- Registriert: Sa 8. Jun 2013, 19:45
Re: Laufzeitmessung Prozedur
Ach so, wieder 'was gelernt 

Re: Laufzeitmessung Prozedur
Bei Intel Prozessoren kann man bei neueren Prozessorgenerationen ab Nehalem auch direkt den Assemblerbefehl RDTSC verwenden, da dieser wieder mit einer konstante Rate läuft. Siehe "AW: Zeitmessung für Programmroutinen".
Generell würde es mich aber bei Mehrprozessorsystemen nicht wundern, dass die gleiche Programmroutine bei unterschiedlicher Prozessorlast, und die wird schwer beeinflußbar sein, unterschiedliche Zeit benötigt.
Lg,
jus
Generell würde es mich aber bei Mehrprozessorsystemen nicht wundern, dass die gleiche Programmroutine bei unterschiedlicher Prozessorlast, und die wird schwer beeinflußbar sein, unterschiedliche Zeit benötigt.
Lg,
jus
-
- Beiträge: 33
- Registriert: Sa 8. Jun 2013, 19:45
Re: Laufzeitmessung Prozedur
Hallo,
danke euch. Ich mache das jetzt so, dass ich die Prozedur 100 mal aufrufe, die Laufzeit aufsummiere und die Summe wieder durch 100 teile.
Grüß euch
danke euch. Ich mache das jetzt so, dass ich die Prozedur 100 mal aufrufe, die Laufzeit aufsummiere und die Summe wieder durch 100 teile.
Grüß euch