Addieren von Zahlen immer gleich schnell?
-
XuXuXu schrieb:
Ich habe mich etwas schwammig ausgedrückt.
Ich meinet , dass 1 und 1 zu addieren genau so schnell ist wie 12312 und 12332, wenn beides den gleichen Datentyp hat.Ja, für Additionen gilt das auf fast allen CPUs.
Für Multiplikationen/Divisionen gilt das auf einigen CPUs, auf anderen nicht.Auf älteren CPUs z.B. war nichtmal die Ausführungszeit von Shift Befehlen konstant, sondern abhängig davon um wieviele Bits verschoben wird (Beispiel: MC68000), auf modernen CPUs ist das aber egal.
-
XuXuXu schrieb:
Ich habe mich etwas schwammig ausgedrückt.
Ich meinet , dass 1 und 1 zu addieren genau so schnell ist wie 12312 und 12332, wenn beides den gleichen Datentyp hat.auch das kann einen unterschied machen.
1+1 ist eine verdopplung, dafür könnte ein schlauer compiler einen links-shift verwenden, weil der möglicherweise schneller ist, als ein 'add' befehl.
die summe von 12312 und 12332 zu berechnen, könnte auf einem 8-bitter zu einem funktionsaufruf führen, der zwei 16-bittige werte mit möglicherweise 32-bittigem ergebnis addiert, und im verhältnis zu einem simplen 'add' befehl ein vielfaches an cpu-zyklen frisst.

-
ten schrieb:
auch das kann einen unterschied machen.
1+1 ist eine verdopplung, dafür könnte ein schlauer compiler einen links-shift verwenden, weil der möglicherweise schneller ist, als ein 'add' befehl.Wenn zwei Variablen addiert werden die jeweils 1 enthalten wird das wohl nicht optimiert und statische additionen sollte der Compiler direkt wegoptimieren, also direkt 2 verwenden, denke ich doch mal.
-
TheToast schrieb:
Wenn zwei Variablen addiert werden die jeweils 1 enthalten wird das wohl nicht optimiert und statische additionen sollte der Compiler direkt wegoptimieren, also direkt 2 verwenden, denke ich doch mal.
nuss ja nicht immer 1 sein:
unsigned char a, b; ... b = a+a; /* compiler könnte shiften */ ...
-
Im Allgemeinen kann bei modernen 32-Bit CPUs davon ausgegangen werden, dass Additionen von kleinen Zahlen gleich lang dauern als die von grossen, solang sie den gleichen Datentyp haben. Ich glaub das ist alles was der Threadersteller wissen wollte

-
shiften ist nicht unbedingt schneller als addieren, bei den meisten cpus ist es gleich schnell, das waere also keine optimierung.
-
der Autor ist an massiver Unfähigkeit und Praxisferne verstorben.
-
rapso schrieb:
shiften ist nicht unbedingt schneller als addieren, bei den meisten cpus ist es gleich schnell, das waere also keine optimierung.
schieberegister gehören zu den trivialsten bausteinen der digitaltechnik. aber siehe dazu space's beitrag...

-
ten schrieb:
rapso schrieb:
shiften ist nicht unbedingt schneller als addieren, bei den meisten cpus ist es gleich schnell, das waere also keine optimierung.
schieberegister gehören zu den trivialsten bausteinen der digitaltechnik. aber siehe dazu space's beitrag...

addition ist ebenfalls in einem takt durchzufuehren und benutzt oft die selbe logic auf einer CPU, siehe dazu referenz-paper von intel, amd, arm, ibm, nec etc.
-
@space: nein, es muss nicht gleich schnell sein, es ist aber in der Praxis so.
Man kann also auch ohne weiteres in der Praxis davon ausgehen dass es so ist.Ich weiss nicht wieso hier schonwieder ganz fest die Realität ignoriert wird...