Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: C++ (alle ISO-Standards) ::  wie laufzeit am genausten messen?  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
wob
Unregistrierter




Beitrag wob Unregistrierter 22:28:00 09.01.2017   Titel:              Zitieren

Du liegst falsch, weil das Zählen nicht viel hilft.

Generell gilt zwar: weniger Schritte sind besser als mehr. Aber die Schritte sind einerseits nicht gleich schnell und andererseits können moderne Prozessoren ggf. mehrere Schritte zur selben Zeit ausgeführen. Dann gibts noch so Dinge wie einen Branch-Predictor. Außerdem musst du noch schauen, welche Daten gerade im Cache sind. Kurzum: wenn du deinen Prozessor ganz exakt kennst, mag es mit viel Aufwand möglich sein, alle Effekte genau zu erkennen und den Code zu analysieren. Aber wer kennt seinen Rechner schon so exakt?

Also ist messen die bessere Alternative.
SeppJ
Global Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 27917
Beitrag SeppJ Global Moderator 22:29:59 09.01.2017   Titel:              Zitieren

Wie viele CPU-Schritte braucht denn folgender Code?
Assembler:
        push    rbp
        mov     rbp, rsp
        mov     DWORD PTR [rbp-4], edi
        mov     eax, DWORD PTR [rbp-4]
        imul    eax, DWORD PTR [rbp-4]
        pop     rbp
        ret
Die Antwort ist nicht 7.

(Bevor jemand fragt: Ich weiß die Antwort auch nicht (genau), ich weiß nur mit Sicherheit, dass sie nicht 7 ist.)

_________________
Korrekte Rechtschreibung und Grammatik sind das sprachliche Äquivalent zu einer Dusche und gepflegter Kleidung.
Mechanics
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.01.2012
Beiträge: 4087
Beitrag Mechanics Mitglied 22:56:39 09.01.2017   Titel:              Zitieren

Das bringt auch nichts, weil man oft schleifen hat usw. Und Code, der alle möglichen anderen Funktionen aufruft. Wenn du Millionen von Datensätzen verarbeitest, wie willst du in Assembler erkennen, dass ein Hash Lookup viel bringen würde gegenüber einer linearen Suche?
Zeus
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.09.2003
Beiträge: 3072
Beitrag Zeus Mitglied 23:04:10 09.01.2017   Titel:              Zitieren

SeppJ schrieb:
Wie viele CPU-Schritte braucht denn folgender Code?
Assembler:
        push    rbp
        mov     rbp, rsp
        mov     DWORD PTR [rbp-4], edi
        mov     eax, DWORD PTR [rbp-4]
        imul    eax, DWORD PTR [rbp-4]
        pop     rbp
        ret
Die Antwort ist nicht 7.

(Bevor jemand fragt: Ich weiß die Antwort auch nicht (genau), ich weiß nur mit Sicherheit, dass sie nicht 7 ist.)


Ich hab 22 bis 26 gezählt bei AMD K7 xD
hustbaer
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2006
Beiträge: 23493
Beitrag hustbaer Mitglied 23:06:32 09.01.2017   Titel:              Zitieren

Arcoth schrieb:
hustbaer schrieb:
Eine mMn. gute Variante ist die Messung so lange zu wiederholen, bis nach N (z.B. 100) Versuchen kein schnellerer Durchlauf mehr gefunden wurde als in allen Versuchen davor.
Vom lieben Volkard, diese Methode.

Hab ja auch gar nicht behauptet es erfunden zu haben :D

Ja, ich glaub ich hab das beim volkard das erste mal gesehen. IIRC hat es aber auch camper mal gepostet. Wo er es her hat weiss ich natürlich nicht, kann sein auch von volkard übernommen kann sein von woanders bzw. selbst ausgedacht.

_________________
Until every person can enjoy all their human rights, we will not stop. I support Amnesty International. Will you?
https://www.amnesty.org / https://www.amnesty.de / https://www.amnesty.at
SeppJ
Global Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 27917
Beitrag SeppJ Global Moderator 00:20:58 10.01.2017   Titel:              Zitieren

Zeus schrieb:

Ich hab 22 bis 26 gezählt bei AMD K7 xD
Das ist ja auch noch geradezu eine einfache Architektur :D :)

_________________
Korrekte Rechtschreibung und Grammatik sind das sprachliche Äquivalent zu einer Dusche und gepflegter Kleidung.
hustbaer
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2006
Beiträge: 23493
Beitrag hustbaer Mitglied 01:01:22 10.01.2017   Titel:              Zitieren

Oder nehmen wir 68K, da gibt's super einfache Zyklen Tabellen. Damit lässt sich alles exakt bestimmen. Also so lange wir nicht Shiften oder Dividieren oder ... ach, Mist :o)

_________________
Until every person can enjoy all their human rights, we will not stop. I support Amnesty International. Will you?
https://www.amnesty.org / https://www.amnesty.de / https://www.amnesty.at
HansKlaus
Mitglied

Benutzerprofil
Anmeldungsdatum: 19.04.2016
Beiträge: 263
Beitrag HansKlaus Mitglied 12:17:17 10.01.2017   Titel:              Zitieren

also unter windows gibts den performancecounter mit einer genauigkeit von (bei mir) 250 ns. das reicht normalerweise aus.
unter linux gibts clock_gettime.

wenn du dem prozess dann auch noch echtzeitprioritäten gibst, sollte sich die anzahl der extremen ausreißer sehr gering halten.
Arcoth
Moderator

Benutzerprofil
Anmeldungsdatum: 02.10.2013
Beiträge: 3494
Beitrag Arcoth Moderator 13:12:47 10.01.2017   Titel:              Zitieren

hustbaer schrieb:
IIRC hat es aber auch camper mal gepostet.
Und wenn ich mich recht erinnere, hat Volkard dann gefragt, ob camper es denn von ihm hat, und er meinte, das wäre möglich. Kann den Thread natürlich nicht finden.

_________________
Obstacles are those frightful things you see when you take your eyes off your goal. - Henry Ford
C++ Forum :: C++ (alle ISO-Standards) ::  wie laufzeit am genausten messen?  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.