-
Forum: Multimedia
Delphi
by Amateurprofi,
30. Nov 2023
Danke Stevie,
tschuldi, dass ich so spät antworte. Ich hatte diesen Text schon vor 2 Wochen geschrieben, mich dann aber um andere Themen gekümmert.
Ich bin mir sicher, dass ich Deine Ausführungen verstanden hatte und ich bin mir auch sicher, dass ich das auch schon vorher wusste.
Ich habe die CMOV-Instruktion immer gemieden, weil sie nicht von allen Prozessoren unterstützt wird, was...
-
Forum: Multimedia
Delphi
by Amateurprofi,
12. Nov 2023
Du hast da uneingeschränkt Recht.
Viel schlimmer ist jedoch das:
@N: add edx,1
cmp edx,255
jbe @2
Da wird das jbe nie ausgeführt.
Aber den Fehler hatte ich in alle Testprozeduren gleichermaßen eingebaut.
Was den Wert in EDX betrifft, hab ich noch mal geprüft, welche Werte in Frage kommen.
-
Forum: Multimedia
Delphi
by Amateurprofi,
9. Nov 2023
OK.
Wie wäre es, wenn Du bei einer Antwort (wenn Du nicht den Beitrag zitierst), angibst, auf welchen Beitrag Du Dich beziehst?
Zum Beispiel ein "Zu #25:" würde helfen, Missverständnisse zu vermeiden.
Ist nur eine Anregung.
-
Forum: Multimedia
Delphi
by Amateurprofi,
8. Nov 2023
Zu "Übrigens schreibt man dec ecx und nicht sub ecx, 1 - dec ist 1 byte instruction, sub benötigt 3 byte"
Da sind die Hersteller meiner CPU anderer Meinung.
Zitat aus Kapitel 2-12 in "IA-32 Intel® Architecture Optimization Reference Manual" (Siehe Anhang)
Merke: Kürzere Instruction bedeutet nicht automatisch "schneller".
Mir ist bewusst, dass bei heutigen Prozessoren (auch bei meinem schon...
-
Forum: Multimedia
Delphi
by Amateurprofi,
8. Nov 2023
Thanks for clarification.
-
Forum: Multimedia
Delphi
by Amateurprofi,
8. Nov 2023
Oh, das habe ich missverstanden. Tschuldi.
-
Forum: Multimedia
Delphi
by Amateurprofi,
8. Nov 2023
Danke, Stevie
Zwei Fragen hätte ich:
1) Was ist "Data"?
Bei mir kommt der Wert, der ggfs. auf 0 oder 255 zu ändern ist, aus EDX (ist -255..255) und der (ggfs. geänderte Wert wird in gespeichert.
2) zu "Ich war auch mal so frei, die non-volatilen Register korrekt zu sichern:"
Ich mache
push edi
push esi
...
-
Forum: Multimedia
Delphi
by Amateurprofi,
7. Nov 2023
SSE, MMX
Unfortunately Pixels are 3 Bytes, not 4 Bytes in pf24bit-Bitmaps.
Furthermore loading the r,g,b Values from memory into SSE/MMX registers and storing from SSE/MMX registers into memory is (my opinion) slower than my code.
Feel free to prove me wrong.
SSE, MMX
Unfortunately Pixels are 3 Bytes, not 4 Bytes in pf24bit-Bitmaps.
Furthermore loading the r,g,b Values from memory into...
-
Forum: Multimedia
Delphi
by Amateurprofi,
7. Nov 2023
Ich habe mir das Thema "Floyd Steinberg" noch einmal zu Gemüte geführt und einige Assembler-Prozeduren zusammengefrickelt, die das Dithering deutlich beschleunigen.
Laufzeiten für Bitmaps mit 2.4MPixel bzw. 13.3MPixel im 32Bit- und 64Bit-Modus
Pas: 149 209 / 857 1165 ms
Pas42: 529 531 / 3048 3027 ms
Pas48: 498 534 / 2866 3021 ms
Asm1: 53,5 54.8 / 342 343 ms
Asm2: 54.1 54.8 / 309 321 ms ...
-
Forum: Multimedia
Delphi
by Amateurprofi,
20. Okt 2023
with AP^, Delta do
begin
v := Blue + B * Factor shr 4;
Please be aware of that the values in Delta (R,G,B) may be negative.
Assume AP.Blue=200 and Delta.B=-10 and Factor=7.
Then V will evaluated as
V := Blue + ((B * Factor) shr 4);
V := 200 + ((-10 * 7) shr 4);
V := 200 + (-70 shr 4);
-
Forum: Multimedia
Delphi
by Amateurprofi,
19. Okt 2023
Have tested your suggestions.
1) NativeInt instead of Integers
Doubles the used time.
2) Replacing EnsureRange bei If then ..,
Adds another few ms
3) shr instead of Div 16
Commented earlier
4) Starting with the Bottom Line
Not tested, would expect advantages
4) X forward
-
Forum: Multimedia
Delphi
by Amateurprofi,
19. Okt 2023
No!
shr with negative numbers?
The compiler converts "Div 16" to "sar 4".
-
Forum: Multimedia
Delphi
by Amateurprofi,
19. Okt 2023
Weil ich auf der Suche nach einem Floyd-Steinberg Algo auf den Thread gestoßen bin und wirklich happy war, als ich den bei shmia fand.
Ich hätte das ja auch als neuen Thread, ohne Bezug auf shmia, posten können, aber ich schmücke mich nicht gern mit fremden Federn.
Übrigens: Die Pyramiden bei Gizeh sind etwas älter als 15 Jahre und werden trotzdem gern und oft besucht.
-
Forum: Multimedia
Delphi
by Amateurprofi,
19. Okt 2023
Ja, genau das ist mir mal mit einem Uralt-Programm passiert, das (neu kompiliert) auf einmal nicht mehr lief.
Hab damals ziemlich lange gebraucht, um zu begreifen, woran es lag.
-
Forum: Multimedia
Delphi
by Amateurprofi,
19. Okt 2023
Nee, warum sollte ich böse sein.
Ich verstehe, dass es im Profi-Bereich notwendig, oder zumindest sinnvoll ist, sich an ein bestimmtes Regelwerk zu halten.
Wie jedoch mein Username vermuten lässt bin ich, IT-bezogen, eher Amateur.
Und ich liebe "with", weil es kompakteren Source-Code ermöglicht.
Aus der Delphi Hilfe "When you use the with statement, your code becomes shorter and easier to...
-
Forum: Multimedia
Delphi
by Amateurprofi,
19. Okt 2023
@shmia,
vielen herzlichen Dank!
Hab mich aufgerufen gefühlt.
Ist etwas schneller als das Original.
Zeitbedarf für ein Bild mit 4608 x 3456 Pixeln:
Original ca. 180 s
Fälschung ca. 1 s
PROCEDURE FloydSteinberg(Bmp:TBitmap);
resourcestring