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


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

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

From Stefan Reuther <stefan.news@arcor.de>
Newsgroups de.comp.lang.iso-c++
Subject Re: Floyd-Steinberg - geht das nicht noch schneller?
Date 2017-02-22 19:07 +0100
Organization A noiseless patient Spider
Message-ID <o8kni7.5i4.1@stefan.msgid.phost.de> (permalink)
References <o8fcfi$am$1@news.albasani.net> <o8i24h.4ug.1@stefan.msgid.phost.de> <o8kapt$3iv$1@news.albasani.net>

Show all headers | View raw


Am 22.02.2017 um 16:29 schrieb Jörg "Yadgar" Bleimann:
>>> Jetzt habe ich also (danke, Stefan Reuther!) meinen
>>> Floyd-Steinberg-Filter einwandfrei implementiert und lasse ihn gerade
>>> per bash-Skript eine Sequenz von über 7000 Bildern bearbeiten... aber
>>> irgendwie kommt mir das alles ziemlich behäbig vor, was die
>>> Rechengeschwindigkeit angeht. Für 2000 Bilder (unkomprimierte TGAs, 533
>>> x 400 Pixel) 69 Minuten, und das auf einem AMD-Hexacore mit 6 x 3,852
>>> GHz... ließe sich da nicht noch einiges optimieren?
>>
>> Da kann man Bücher drüber schreiben. Die offensichtliche Frage natürlich
>> zuerst: Compiler-Optimierung schon eingeschaltet?
> 
> So weit ich weiß, nicht... ich kompliere immer g++ quelle.cc -o kompilat

Dann pack da noch ein -O oder -O2 dazu und staune.

>> Echte[tm] Bildverarbeitungsalgorithmen arbeiten auf nacktem Speicher,
>> also bestenfalls ein Vektor, auf dessen Inhalt dann am Ende per
>> Pointer+Länge zugegriffen wird (die Größe ändert sich ja nicht).
> 
> Nein, Pixel bestehen an sich aus jeweils drei unsigned char-Werten...
> die müssen zum Rechnen natürlich in längere Typen umgewandelt werden!

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.

>> Pixel
>> werden dann nach Möglichkeit nicht in einer Klasse dargestellt, sondern
>> in einem Datentyp, der es erlaubt, die SIMD-Instruktionen
> 
> SIMD? Kann das mein Hexacore?

Das kann sogar ein 20 Jahre alter Pentium MMX.

SIMD ist der Oberbegriff für MMX, SSE, AltiVec, NEON, und wie das alles
heißt. Voraussetzung dafür ist aber meistens speziell geschriebener Code
und die Verwendung spezieller Datentypen, und dann kann der Prozessor
halt in einem Zyklus 8 Integer auf einmal addieren.

Allerdings: wenn dein "Hauptverkaufsargument" nicht hochoptimierte
Grafikalgorithmen sind, ist das alles nicht nötig. Meine
Grafikspielereien arbeiten auch nur mit ganz normalem C++ (also ohne
SIMD, ohne Assembler) und waren schon auf 200 MHz schnell genug, um
damit eine passable GUI zu bauen.


  Stefan

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