Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.iso-c++ > #2030
| From | ram@zedat.fu-berlin.de (Stefan Ram) |
|---|---|
| Newsgroups | de.comp.lang.iso-c++ |
| Subject | Re: Floyd-Steinberg - geht das nicht noch schneller? |
| Date | 2017-02-23 01:14 +0000 |
| Organization | Stefan Ram |
| Message-ID | <Pixel-20170223020546@ram.dialup.fu-berlin.de> (permalink) |
| References | <o8fcfi$am$1@news.albasani.net> <o8i24h.4ug.1@stefan.msgid.phost.de> <o8kapt$3iv$1@news.albasani.net> <o8kni7.5i4.1@stefan.msgid.phost.de> |
Stefan Reuther <stefan.news@arcor.de> writes:
>Dann pack da noch ein -O oder -O2 dazu und staune.
Warum nicht »-03«?
>Dann könntest du schon einen Gewinn daraus ziehen, dass du
>diese Klasse von "drei unsigned char" auf "ein uint32_t"
>umbaust. "get_red" ist dann "return (pixel >> 16)", "set_red"
>ist "pixel = (pixel & 0x00FFFF) | (value << 16)", und so
>weiter.
Hier wird
a.y = c;
zu
movb %dl, 49(%rsp)
kompiliert (a ist eine struct mit drei chars x,y,z bei 48,
c befindet sich schon in edx).
Aus
a = a&0xff00ff | c<<8;
wird (jetzt ist a ein unsigned long bei 64,
c ist wieder schon in edx)
movl 64(%rsp), %eax
andl $16711935, %eax
movl %eax, %ecx
movsbl %dl, %eax
sall $8, %eax
orl %ecx, %eax
movl %eax, 64(%rsp)
Ist das immer effizienter als ein einzelnes »movb«?
Was ist, wenn ich die ganze struct zuweise?
In einer bestimmten Konfiguration verwendet die
Implementation hier, um eine
struct { char x, y, z; }
zu kopieren ein movw und ein movb, aber wenn man ein
Füll-char hinzufügt:
struct { char x, y, z, f; }
wird nur ein einziges movl genommen. Das muß dann
nicht unbedingt ineffizienter sein als das Kopieren
eines long.
>Das kann sogar ein 20 Jahre alter Pentium MMX.
Bei gcc kann man sich auch mal Optionen wie
-msse2
oder
-march=native
ansehen.
Back to de.comp.lang.iso-c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Floyd-Steinberg - geht das nicht noch schneller? Jörg "Yadgar" Bleimann <yazdegird@gmx.de> - 2017-02-20 19:27 +0100
Re: Floyd-Steinberg - geht das nicht noch schneller? ram@zedat.fu-berlin.de (Stefan Ram) - 2017-02-21 16:23 +0000
Re: Floyd-Steinberg - geht das nicht noch schneller? Stefan Reuther <stefan.news@arcor.de> - 2017-02-21 18:49 +0100
Re: Floyd-Steinberg - geht das nicht noch schneller? Markus Schaaf <mschaaf@elaboris.de> - 2017-02-21 21:47 +0100
Re: Floyd-Steinberg - geht das nicht noch schneller? Jörg "Yadgar" Bleimann <yazdegird@gmx.de> - 2017-02-22 16:29 +0100
Re: Floyd-Steinberg - geht das nicht noch schneller? Stefan Reuther <stefan.news@arcor.de> - 2017-02-22 19:07 +0100
Re: Floyd-Steinberg - geht das nicht noch schneller? ram@zedat.fu-berlin.de (Stefan Ram) - 2017-02-23 01:14 +0000
Re: Floyd-Steinberg - geht das nicht noch schneller? Stefan Reuther <stefan.news@arcor.de> - 2017-02-23 18:58 +0100
Re: Floyd-Steinberg - geht das nicht noch schneller? Jörg "Yadgar" Bleimann <yazdegird@gmx.de> - 2017-03-22 02:23 +0100
Re: Floyd-Steinberg - geht das nicht noch schneller? Stefan Reuther <stefan.news@arcor.de> - 2017-03-22 19:43 +0100
Re: Floyd-Steinberg - geht das nicht noch schneller? Bonita Montero <Bonita.Montero@gmail.com> - 2017-02-23 18:27 +0100
Re: Floyd-Steinberg - geht das nicht noch schneller? Stefan Reuther <stefan.news@arcor.de> - 2017-02-24 18:34 +0100
csiph-web