Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.iso-c++ > #2030

Re: Floyd-Steinberg - geht das nicht noch schneller?

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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