Gast
#870327
Morgen, mal ne frage, was geht schneller auf nem avr 8 bit: unsigned int j=(zahl<<1)-(i<<9); unsigned int j=(zahl-256*i)*2;
|
Anzeige
|
Berechnungen auf avr 8 bit
Gast
#870327
Morgen, mal ne frage, was geht schneller auf nem avr 8 bit: unsigned int j=(zahl<<1)-(i<<9); unsigned int j=(zahl-256*i)*2;
Gast
#870331
Ersteres, da keine Multiplikation... Ohne die Aequivalenz der Operationen vorauszusetzen natuerlich ersteres... Seht doch einfach nach der Anzahl der Operatoren? Das reicht in dem Fall schon... Ich wünsche noch eine angenehme Nacht! Gruß Ovular
Gast
#870337
Jo, danke macht sinn. hab ja schon umgeformt ... wenn man die klammer auflöst steht da ja : 2*j-512*i
Gast
#870339
Äh, wenn man die klammer auflöst steht da ja : j= 2*zahl-512*j so gute nach :) Das sind immernoch zwei Multiplikationen Schnuffel :D
Gast
#870344
ja schon, aber zahl<<1 ist zahl*2 und j<<9 ist j*512 mir ist nicht klar ob der compiler oder wer auch immer, nicht auch einfach schiebt bei *2, warscheinlich schon oder? Kannste nicht von ausgehen ;) Zweiteres ist schneller, einfach GCC fragen (hier avr-gcc 3.4.6, ATmega8, -Os) :-))
Kann er aber noch etwas besser (-Os -morder1):
Gast
#870607
jau, danke. -Os ist optimiert auf size, aber was ist -morder1 ? rechner wrote:
> aber was ist -morder1 ?
avr-gcc bietet 2 undokumentierte Optionen, welche die
Registerallokierung (d.h. Abbildung von pseudo-regs auf hard-regs)
beeinflussen. Neben der Standard-Rgisterreihenfolge gibt's noch -morder1
und -morder2 (zumindest in avr-gcc 3.4.x). Wahrscheinlich von Chertikov
zum Rumexperimentieren?
Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|