AW: Prüfung eines Bitmaps auf Transparenz (gehts noch schneller)?
Zitat:
zu "Was mich aber wundert, sind die z.T. erheblichen Schwankungen beim gleichen Test (SSE: 13 / 25 MS)." Ich habe (bei allen Funktionen) ähnliche Schwankungen gesehen, allerdings nur, wenn ich das als "Release" compiliert hatte. Bei "Debug" waren die Schwankungen eher im Normalbereich. |
AW: Prüfung eines Bitmaps auf Transparenz (gehts noch schneller)?
Zitat:
(Release 2007 wenn ichs recht sehe?) |
AW: Prüfung eines Bitmaps auf Transparenz (gehts noch schneller)?
Zitat:
Zitat:
|
AW: Prüfung eines Bitmaps auf Transparenz (gehts noch schneller)?
Ach sach ma:
Wie misst du eigentlich die Zeit? Doch hoffentlich nicht mit Now() ;) Nochmal genauer gemessen: Meine alte Variante brauchte ~ 5.8ms Nen bisschen was umgestellt und jetzt läuft sie bei mir zwischen 3.9 - 4.1ms (Vielleicht ist nen off by one error drin nicht genau geprüft *hust*)
Delphi-Quellcode:
type TRGBA = packed record B, G, R, A: Byte; end; PRGBA = ^TRGBA; TRGBA4 = array[0..3] of TRGBA; PRGBA4 = ^TRGBA4; TScanLine = array[0..100000] of TRGBA; PScanLine = ^TScanLine; function HasTransparentRGBAValues(const bm:TBitmap): Boolean; var z: Integer; RGBA: PScanLine; LPixels, LLastPixels: PRGBA4; LPixel: PRGBA; i: Integer; begin RGBA := bm.Scanline[bm.Height-1]; z := bm.Width * bm.Height; LPixels := @RGBA[0]; LLastPixels := @RGBA[z div 4 * 4]; while (LPixels <> LLastPixels) and ((LPixels[0].A and LPixels[1].A and LPixels[2].A and LPixels[3].A) = 255) do Inc(LPixels); Result := ((LPixels[0].A and LPixels[1].A and LPixels[2].A and LPixels[3].A) <> 255); if not Result then begin Inc(LPixels); LPixel := PRGBA(LPixels); for i := 0 to z mod 4 - 1 do begin if LPixel.A < 255 then Exit(True); Inc(LPixel); end; end; end; |
AW: Prüfung eines Bitmaps auf Transparenz (gehts noch schneller)?
Zitat:
|
AW: Prüfung eines Bitmaps auf Transparenz (gehts noch schneller)?
Zitat:
Im Unterschied dazu sind die Messungen mit der Demo-Anwendung, die ich geschrieben und hier ja mal hochgeladen hatte etwas anders. Im Debug-Modus erhalte ich dort ca. 50 MS und im Release-Modus ca.23 MS. Warum hier diese Abweichungen in der Messung zwischen AQTime und Queryperformancecounter sind, weiß ich leider auch nicht. |
AW: Prüfung eines Bitmaps auf Transparenz (gehts noch schneller)?
Zitat:
QueryPerformanceFrequency(iTimerFreq); QueryPerformanceCounter(iTimerStart); Das sollte doch OK sein, oder? |
AW: Prüfung eines Bitmaps auf Transparenz (gehts noch schneller)?
Gemütlicher geht das mit TStopWatch :stupid:
|
AW: Prüfung eines Bitmaps auf Transparenz (gehts noch schneller)?
Zitat:
Insgesamt glaube ich aber inzwischen, dass man hier per ASM oder sonstige Prüf-Optimierungen wohl nicht mehr viel machen kann (wenn es denn DEN Super-ASM-Befehl nicht gibt). |
AW: Prüfung eines Bitmaps auf Transparenz (gehts noch schneller)?
Zitat:
Unter Windows benutzt TStopwatch aber auch QueryPerformanceCounter und hier hatte ich mir schon vor langer Zeit mal die benötigten MS-Funktionen in eigene Start- und Stop-Funktionen gekapselt. Aber wer das noch nicht gemacht hat, kann hier Dank der neueren Delphi-Versionen direkt bequem per Einbindung der Systems.Diagnostics drauf zugreifen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 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