Programmieren - alles kontrollieren 4.946 Themen, 20.742 Beiträge

Zeit für Integer/Floatrechnungen

RyoOhki / 28 Antworten / Flachansicht Nickles

Eine Frage zur Berechnung von Integer und Float werten unter C++:

sollte ein Programm länger brauchen, zwei Float zu addieren (z.B. via Add = 0,1 + 0,1) als zwei integerwerte (Add2 = 1 + 1 ) zu addieren, da es sich um Flieskommberechnungen handel?

ich habe ein Programm geschrieben das beide opperationen 40000000000mal ausführt und die zeit dafür stoppt, erhalte aber bei beiden beinahe identische Werte.

Ich meine, sollte ein PC Flieskommazahlen nicht langsammer berechnen können als Integerzahlen?

Grüße,
Ryo

bei Antwort benachrichtigen
mr.escape Dreamforger „Cache /Pipelineing /Register“
Optionen

Vollkommen richtig, aber die sollten aus dem 1st level cache kommen um die berechnung nicht zu beeinflussen. Die vielfältigen mechanismen einer modernen cpu (register renaming, speculative execution, out of order execution, jump prediction etc.), um zeit zu sparen machen richtige benchmarks sowieso fast unmöglich, da man jeweils nur sagen kann, dass eine bestimmte anwendung auf einer bestimmten cpu etwa die und die geschwindigkeit erreicht. Eine inhaltlich identische anwendung, lediglich in einer anderen sprache geschrieben oder gar nur mit einem anderen compiler übersetzt bringt wieder ganz andere ergebnisse. Selbst der mehrfache start kann aufgrung von cachezuständen deutlich unterschiede hervorbringen. Mal liegt ein allokierter speicherbereich cachegünstig, dann mal nicht. Am besten also beide varianten implementieren und testen. Grosse unterschieden werden aber wohl eh nicht rauskommen, da zuviele andere arbeitsschritte interferieren und die fraglichen befehle unter günstigen umständen in einem takt (manchmal auch mehrere parallel) abgearbeitet werden können.

mr.escape

"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen