![]() |
AW: schnelle getPixel Funktion
@medium
Das Zitat stammt aus dem Ausgangspost ;-) Gruß, Chris |
AW: schnelle getPixel Funktion
Das ist von viertel vor zehn! Du verlangst das unmögliche :D Dennoch bleibt das manuelle inlinen eine gute Option. Wenn man derart auf die Tube drücken muss, geht halt etwas Schönheit dabei drauf. Bei einem Einzeiler find ich das auch ausgesprochen vertretbar.
|
AW: schnelle getPixel Funktion
Zitat:
|
AW: schnelle getPixel Funktion
@Medium
wahlfreien Zugriff brauche ich nicht wirklich aber ich habe zum Beispiel einen Algorithmus in dem ich mit einem Maskenbild und zwei rois auf einem anderen Bild arbeite - ich hantiere also mit drei Scanline Pointern die ich dann richtig bestimmen und inkrementieren muss. Aber ich hab mich schon fast damit abgefunden das direkt in der Hauptfunktion zu machen und den Pixel Zugriff nicht in eine Funktion auszulagern. Wie du schon gesagt hast geringe Laufzeit > Eleganz und Lesbarkeit ;) @ChrisE hab mal die Index Tabelle ausprobiert aber das Durchlaufen der Schleife hat sich dabei nicht signifikant verbessert - liegt zwischen 27 und 28 ms. |
AW: schnelle getPixel Funktion
Zitat:
Gruß, Chris |
AW: schnelle getPixel Funktion
Liste der Anhänge anzeigen (Anzahl: 1)
Ok hier mal meine kleine Testapp - hab noch etwas aufgeräumt und das graphics32 rausgenommen damit ihr nicht noch zusätzliche Abhängigkeiten habt.
Einmal wird das Bild mit Scanline und TRGBTriple Pointer und einmal mit BPyteArrays durchlaufen. Außerdem dann einmal die von TBitmap abgeleitete Klasse mit zwei getPixel Methoden für die Liste von PbyteArray Pointern und dann mit der Liste der vorher berechneten X Offsets. Die fastpixel Methode von Bummi funktioniert bei mir noch nicht. bye Maick P.s. mein Testimage hab ich mal nicht mit in das zip File gepackt - das wäre 9MB groß - ist ein ganz normales RGB Bild 2048*1536 |
AW: schnelle getPixel Funktion
Hallo,
TMyBitmap fehlt :-( Gruß, Chris |
AW: schnelle getPixel Funktion
Liste der Anhänge anzeigen (Anzahl: 1)
ohhh sorry ganz vergessen
|
AW: schnelle getPixel Funktion
Noch ein Vorschlag: Parallelisierung. Sobald du eine CPU mit >1 Kern hast, lohnt sich Multithreading merklich. Auf welcher Ebene man dann ansetzt ist etwas individuell, aber wenn es entsprechend viele Bilder sind, wäre denke ich viel gewonnen, wenn du einfach den aktuellen gesamten Vorgang in einen Thread schubst, und davon so grob übern Daumen Kernanzahl*2 Mal viele davon ackern lässt. Da die Operation an sich aber schon recht fix ist, ließen sich den Threads statt je eines einzelnen Bildes auch eine Liste von ein paar mehr zustecken, so dass man sich nicht nachher durch den Overhead der Threadverwaltung wieder zu viel kaputt macht. Das ist in der Regel dann ein wenig trial and error bis man da ein ungefähres Optimum hat.
Seit ich Threadblut geleckt habe, komm ich davon nicht mehr runter :) |
AW: schnelle getPixel Funktion
Da ich hier auf 4 Kernen arbeiten kann ist das auf jeden Fall eine Option :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz