AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Suchfunktion Ergebnis der Suchanfrage

Ergebnis der Suchanfrage


Datum des Suchindex: Heute, 11:17

Parameter dieser Suchanfrage:

Suche in Thema: Tparallel und Bitmap-Bearbeitung
Suche alle Beiträge, die von "Harry Stahl" geschrieben wurden
• Suchmethode: "Suche nach allen Begriffen"
• Nach Datum (firstpost) sortiert
• Zeige Treffer als Beiträge
Zeige 8 von insges. 8 Treffern
Suche benötigte 0.004s

Es liegen Ergebnisse in folgenden Bereichen vor:

  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Tparallel und Bitmap-Bearbeitung

     
      by Harry Stahl, 20. Nov 2014
    Zusammenfassen der Bit-Varianten wäre zwar möglich, aber bei 24-Bit Bitmaps mit Performance-Verlust verbunden. Bei einer 32-Bitmap kann das System die 4*8 Byte gut in einem Rutsch in die Register einer 32-Bit oder 64-Bit CPU laden. Daher ist dann der Zugriff per Array in den Speicherbereich die effizienteste Lösung. Bei der 24-Bit-Bitmap käme das wegen der nicht passenden Registerbreite nicht so...
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Tparallel und Bitmap-Bearbeitung

     
      by Harry Stahl, 20. Nov 2014
    Also, um das noch abzuschließen: Offensichtlich ist Scanline nicht threadsafe. Daher habe ich Scanline nur einmal außerhalb des Task-Threads verwendet und innerhalb des Tasks greife ich berechnet auf den DIB-Speicher zu.

    Auf einer 6-Kern CPU wird das Bild dann mit ca. 40 MS bearbeitet, also mit Parallel-Bearbeitung 4 mal schneller als ohne.

    Hier die fertige Lösung für 24 und 32-Bit-Bitmap...
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Tparallel und Bitmap-Bearbeitung

     
      by Harry Stahl, 20. Nov 2014
    OK, so sieht das nun fertig aus, abhängig von der Anzahl der CPUs werden entsprechende Worker-Tasks erzeugt, die dann die einzelnen Bildteile berechnen. Auf einem 4-Kern-PC spürt man wirklich einen deutlichen Unterschied.

    Hier die geänderten Teile:


    var
    ...
    Procedure CreateNewWorkerTask (var T: ITask; L:Integer);
    begin
    T := TTask.Create(procedure ()
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Tparallel und Bitmap-Bearbeitung

     
      by Harry Stahl, 20. Nov 2014
    Was seltsam ist: Der zuletzt von mir gepostete Code funktioniert ohne Fehler, wenn man vor Aufruf der beiden Tasks die folgenden beiden Zeilen einfügt:


    QB := Original.ScanLine; // <-- Die
    ZB := Bitmap.ScanLine; // <-- und die Zeile im Code, dann keine Access-Violation


    Also eigentlich ziemlich sinnlos, aber durch den Aufruf von Scanline wird "TBitmap.GetScanline aufgerufen und...
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Tparallel und Bitmap-Bearbeitung

     
      by Harry Stahl, 19. Nov 2014
    Ja, in der Tat, hier dauert es nun ca. 570 MS, Beschleunigungsziel wird also nicht erreicht.

    Aber auf jeden Fall hast Du schon mal mehr Licht ins Dunkel gebracht, also dafür schon mal vielen Dank. Werde weiter probieren und posten, wenn ich die Lösung habe...
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Tparallel und Bitmap-Bearbeitung

     
      by Harry Stahl, 19. Nov 2014
    Also nach meinen bisherigen Erfahrungen und Tests ist Scanline immer der Flaschenhals, weil eben Scanline soviel Aufrufe selbst noch tätigt. Meine optimierten Routinen (dazu gehört das gezeigte Beispiel nicht) verwenden immer nur einen einzigen Aufruf von Scanline (um die Startposition zu erhalten), die restlichen Zugriffe finden aufgrund von Berechnungen statt.

    Davon abgesehen greife ich hier...
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Tparallel und Bitmap-Bearbeitung

     
      by Harry Stahl, 19. Nov 2014
    Scanline kannst Du auch mit einem 24-Bit-Bitmap verwenden, Du musst halt nur berücksichtigen, dass hier auf 3 Bit gezeigt wird (bei 32-Bit auf 4 Bit).



    OK, in einem Thread ist das wirklich keine gute Idee.

    Ich versuche mal einen anderen Ansatz, das mit TTask zu beschleunigen, also einmal den oberen Teil der Bitmap berechnen, dann den unteren Teil, beides halt (fast) gleichzeitig. Da ich...
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    Tparallel und Bitmap-Bearbeitung

     
      by Harry Stahl, 18. Nov 2014
    Ich würde gerne die TParallel-Library einsetzen, um verschiedene Bitmap-Routinen schneller zu machen.

    Ich habe hier versucht, das mal für eine 24-Bit-Bitmap zu implementieren (Funktion, welche abhängig von einem Wert eine Bitmap aufhellt bzw. abdunkelt):

    procedure Helligkeit(Bitmap: TBitmap; Const Original : TBitmap; Value: integer; IgnoreWhite: Boolean);
    var
    x,y : integer;
    Ziel ...


URL zu dieser Suchanfrage:

https://www.delphipraxis.net/dp_search.php?do=usersearch&search_username=Harry+Stahl&search_exact_username=1&search_sortby=dateline&search_resulttype=post&search_matchmode=0&searchthreadid=182796
Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz