Wieviele Flops?

#1189223
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
@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
Lesenswert?
• ▲
▼
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.
#1189905
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
> 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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren