amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Bit von Word extrahieren [ - Search - New posts - Register - Login - ]

1 -2- [ - Post reply - ]

2006-06-12, 23:13 h

DariusBrewka
Posts: 899
[Banned user]
Zitat:
Original von Holger:
Zitat:
Original von DariusBrewka:
ob's effizienter ist will ich bestreiten, aber LSL ist auch nichts anderes als eine Multiplikation mit (2^bitN) oder bei LSR eine division durch (2^bitN).

Hast Du ein "nicht" vergessen? Shift-Operationen sind deutlich schneller als Multiplikationen und um ein Vielfaches schneller als Divisionen.

Jain, ich meinte nicht das ein * (2^bitN) schneller als LSL bitN ist, sondern daß das einsetzen des direkten Wertes einer Verschiebeop. schneller ist als ein LSL bitN, d.h. ein AND 0x80 schneller als ein AND (1 LSL 7) ist, das mit * oder / ist nur eine andere Darstellung von LSL oder LSR, da die Verschiebung Konstant ist (soweit ich es Verstanden habe) wird jeder Vernünftige Compiler ein / 2 ^ bitN durch ein LSR bitN ersetzen.

Zitat:
An den Stellen, wo Performanceunterschiede wirklich meßbar sind.

wie gesagt für mich kam heraus das bitN Konstant ist und dann verstehe ich nicht, warum ich nicht den Wert direkt einsetze und stattdessen ein Bit Verschiebe, wenn nicht kann man auch ein Array machen, wo jedes Feldelement einem Bitwert entspricht oder oder oder.

Wie gesagt ist mir nicht ganz Klar was gemacht werden soll.

[ - Answer - Quote - Direct link - ]

2006-06-13, 08:30 h

Holger
Posts: 8116
User
Zitat:
Original von DariusBrewka:
Jain, ich meinte nicht das ein * (2^bitN) schneller als LSL bitN ist, sondern daß das einsetzen des direkten Wertes einer Verschiebeop. schneller ist als ein LSL bitN, d.h. ein AND 0x80 schneller als ein AND (1 LSL 7) ist, das mit * oder / ist nur eine andere Darstellung von LSL oder LSR, da die Verschiebung Konstant ist (soweit ich es Verstanden habe) wird jeder Vernünftige Compiler ein / 2 ^ bitN durch ein LSR bitN ersetzen.


Wenn der Compiler "vernünftig" genug ist, x/2^n durch x>>n zu ersetzen, sollte er auch vernünftig genug sein, diesen konstanten Ausdruck als konstanten Wert zu übersetzen.

In diesem Fall wäre also 1<<7 nicht langsamer als 0x80.

Und wenn n keine Konstante ist, sind Compiler nicht so "vernünftig", da n Werte kleiner als 0 oder größer als die Bitanzahl des Datentyps annehmen könnte. In diesem Fall liefern die beiden Operationen nämlich unterschiedliche Ergebnisse. Da hilft nur die explizite Verwendung des shift-Operators, wenn dieser das richtige tut. Und dann ist er auch schneller.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]


1 -2- [ - Post reply - ]


amiga-news.de Forum > Programmierung > Bit von Word extrahieren [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.