![]() |
AW: weniger Scanline aufrufe ... Graustufenbild
Hallo Thomas
ich weiss nicht was du in deiner _Callback tust - wahrscheinlich das in #1 ursprünglich verlangte (?). Hast du deine Varianten 1,2,3 auf deinem Rechner auch "gegen" den Code aus #20 laufen lassen? Gruss Michael |
AW: weniger Scanline aufrufe ... Graustufenbild
Zitat:
mir fiel auf, dass Du die BytesPerLine selbst errechnest. Ich mache das immer so:
Delphi-Quellcode:
Und
DstLine := _DstBmp.ScanLine[0];
if h>1 then BytesPerLine:=NativeInt(_DstBmp.ScanLine[1]) - NativeInt(DstLine) else BytesPerLine:=0;
Delphi-Quellcode:
Das erspart Überraschungen wenn die Zeilen in der Bitmap dann doch mal umgekehrt gespeichert sind.
Inc(NativeInt(DstLine), BytesPerLine);
|
AW: weniger Scanline aufrufe ... Graustufenbild
Zitat:
|
AW: weniger Scanline aufrufe ... Graustufenbild
Zitat:
sorry, ich hab nicht den ganzen Thread gelesen, nur #30, ansonsten hätte ich mir meinen Kommentar gespart. |
AW: weniger Scanline aufrufe ... Graustufenbild
Zitat:
Zitat:
Zitat:
|
AW: weniger Scanline aufrufe ... Graustufenbild
Zitat:
Ich habe bisher noch keine Bitmap gesehen, die nicht umgedreht gespeichert war (wobei die alle von unseren internen Programmen erzeugt werden, ist also kein Wunder). Und wenn das irgendwann passiert, merkt man das ziemlich schnell, weil es eine Access Violation gibt. |
AW: weniger Scanline aufrufe ... Graustufenbild
Wenn es dir um Effizienz geht (deine Scanline "Optimierung"), dann solltest du bei zeitkritischen Anwendungen auf die Callback Funktion verzichten. Damit sparst du viel mehr Nanosekunden ;-).
Und wenn du das nicht willst: In vielen Anwendungsfällen kannst du sicher auf die Weitergabe von x,y an deine Callbackfunktion verzichten. Ich habe auch rasch gemessen: 1220x753 Bild, 1000 Durchläufe: 0: Ist meine Prozedur von weiter oben, 1,2,3 sind deine (mit Callbackfunkton ohne Parameter x,y). Du hast geschrieben deine 3 sei ähnlich 0; punkto Speed sind sie es nicht. Der Aufruf der Callbackfunktion bremst natürlich in mehrfacher Hinsicht (Prozessorcache, mehr Code). 64Bit App i7-13620H @ 2.40GHz Win11 Home 0 : 1.184 sec 1 : 4.827 2 : 3.646 3 : 4.074 i7-11800H @ 2.30GHz Win11 Pro 0 : 1.388 1 : 5.765 2 : 4.309 3 : 4.924 AMD EPYC-Rome, 2350 Mhz WinServer 2022 0 : 2.461 1 : 6.577 2 : 5.283 3 : 6.988 Intel Xeon Cascadelake, 2394 MHz WinServer 2019 0 : 3,333 1 : 11,51 2 : 8,333 3 : 10,16 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:31 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