Wieviele Flops?

#1189223
FLOPS anzugeben macht nur sinn bei Architekturen die auch eine FPU 
haben. Alle anderen machen das über Libs und das ist vergleichsweise 
lächerlich langsam.
Darum gibts bei µCs auch meist den Wert MIPS, wobei der alleine 
natürlich noch nichts über die Geschwindigkeit bei Rechenoperationen 
aussagt.
#1189225
@Henry

Irgendwie mag ich nicht so recht glauben, dass das alles ist, was der 
ATmega kann. Allein schon der erste Test ergibt sehr fragwürdige Zeiten. 
Eigentlich sollten fürs Füllen von 256 Bytes ca 96µS verbraucht werden, 
denn das Speichern dauert 2 Takte, der Vergleich auch 2 Takte und der 
bedingte Sprung ebenfalls, macht alles zusammen 256*3*2 = 1536 Takte = 
96µS @ 16MHz + Overhead um die Register mit Werten vorzuladen. Und bei 
den restlichens Benchmarks tauchen änliche Widersprüche auf...

MfG Mark
#1189233
Mark P. wrote:

> Eigentlich sollten fürs Füllen von 256 Bytes ca 96µS verbraucht werden,
> denn das Speichern dauert 2 Takte, der Vergleich auch 2 Takte und der
> bedingte Sprung ebenfalls

Wenn er das im Pointer-Register lässt. Nur hat der AVR im GCC 
Maschinenmodell möglicherweise kein dafür permanent verfügbares 
Pointerregister, also könnte viel redundantes Geschubse drin stecken. 
Könnte auch vom Optimierungslevel abhängen. Solche Schleifen profitieren 
teilweise von unrolling. Erzeugten Code ansehen.

Aber wie ich oben schon schrieb: Das ist Sache der Implementierung im 
Compiler und dessen Laufzeitbibliothek. Andere Compiler können grad an 
solchen Stellen drastisch bessere oder schlechtere Werte liefern.
#1189749
Henry wrote:
> @ Mark P.
>
> Ja die ATmega Werte waren wirklich falsch aber nicht von mir.
> ATmega habe ich nochmals ermittelt, im Simulator bei 20MHz.


> Messungen ohne Codeoptimierung.

Ich schwanke noch, ob ich das als unfair bezeichnen würde oder nicht :-)
#1189905
Unfair gegenüber dem Compiler, unfair gegenüber dem µC

Hier werden absolute Zeiten gemessen. Da sollte IMHO der Compiler auch 
zeigen dürfen was er kann.

Aber lass uns jetzt bitte nicht in einen Glaubenskrieg zum Thema "Sinn 
und Unsinn von Benchmarks" oder noch schlimmer "meiner ist schneller als 
deiner" eintreten.
Gast #1189938
> Da sollte IMHO der Compiler auch zeigen dürfen was er kann.

Das hätte ich mir auch gewünscht aber bei diesem simplen Benchmark 
funktioniert das nicht.

Zum messen der Zeit jedes Codeabschnitts müssen Breakpoints gesetzt 
werden. Der GNUCC verwürfelt aber schon in der kleinsten 
Optimierungsstufe –O1 den Code dermaßen, dass die Zuordnung zwischen 
C-Quellcode und Assembler verloren geht. Dadurch ist Debugging und 
Breakpoint nicht mehr möglich. Das könnte man sicher irgendwie hinbiegen 
aber wer hat dazu schon Lust.

Da alle Tests ohne Codeoptimierung gemacht wurden hat man auch so einen 
Richtwert der Controller-Leistung.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.