Benchmark Test bzw ein Versuch dazu^^
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Evlt. könnte man die Tests noch ausbauen auf andere Funktion z.b. das Laden einer Grafik Datei, das zeichnen einer Grafik Datei und soweiter.
Evlt. ließe sich sogar eine art test Umgebung aufbauen. Wo dann die Ergebnisse schön in einem Balken Diagamm oder so angezeigt werden.
Währe das eine Idee/Möglich ?
theo du meinst wirklich das umrechen der RGB werte dauert wirklich so lange ?
Evlt. ließe sich sogar eine art test Umgebung aufbauen. Wo dann die Ergebnisse schön in einem Balken Diagamm oder so angezeigt werden.
Währe das eine Idee/Möglich ?
theo du meinst wirklich das umrechen der RGB werte dauert wirklich so lange ?
MFG
Michael Springwald
Michael Springwald
Hat deine LCL dieses Property? Meine nicht.
http://svn.freepascal.org/cgi-bin/viewv ... 20&r2=8221" onclick="window.open(this.href);return false;
http://svn.freepascal.org/cgi-bin/viewv ... 20&r2=8221" onclick="window.open(this.href);return false;
Nimm (wenn schon) OpBitmap dafür. Da funzt Scanline wie bei Delphi.EugenE hat geschrieben:Hat jemand nen beispiel für TLazIntfImage Scanline? das example im Lazarus Ordner ist mir zu hoch^^
Du brauchst keine Angst vor OpBitmap zu haben.
Man kann sich da, wie bei Synapse, auch nur die Units rauspflücken die man wirklich braucht.
In deinem Falle opbitmap sowie die Units welche das zum Kompilieren noch benötigt (resample, ftbresenham, wincomp) und lazbridge. In lazbridge gibt es einen auskommentierten Switch:
{_$DEFINE VER_MINIMAL}
Dort einfach den Underscore wegmachen, und du bist die Formate los.
Du kannst auch noch opimglib benützen für Drehen, Füllen, Weichzeichnen.
Wenn du das absolute Minimum haben willst, kannst du den gleichen Trick {$DEFINE VER_MINIMAL} auch in opbitmap anwenden.
Dann brauchts nur noch opbitmap und lazbridge.
Das hat auch den Vorteil, dass du deinen Code dann mit einem stabilen System schreibst.
D.h. wenn in der LCL Grafik mal wieder alles ändert, brauchst du deinen OpBitmap Code nicht ändern.
Man muss höchstens die Lazbridge wieder anpassen (mach ich dann schon).
Aber für deinen Button müsste auch der Opbitmap.Canvas.Pixels Zugriff schnell genug sein.
Edit: Es gibt einen winzigen Syntax-Fehler in lazbridge: Bei Verwendung von VER_MINIMAL muss das "type" in den ifndef Block rein
Code: Alles auswählen
{$IFNDEF VER_MINIMAL}
type
Teste das Ganze z.B. so:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var op:TCanvasOPBitmap;
begin
op:=TCanvasOPBitmap.create;
op.Width:=200;
op.Height:=200;
op.Canvas.Brush.Color:=clgreen;
op.Canvas.FillRect(Rect(0,0,200,200));
AssignOpBitmapToBitmap(op, Image1.Picture.Bitmap);
op.free;
end;
Wie du meinst.
Bezüglich des Speicherlecks, da gibt's im Moment sowieso Probleme. Abwarten.
http://bugs.freepascal.org/view.php?id=11708" onclick="window.open(this.href);return false;
Bezüglich des Speicherlecks, da gibt's im Moment sowieso Probleme. Abwarten.
http://bugs.freepascal.org/view.php?id=11708" onclick="window.open(this.href);return false;
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
TBitmap TGraphic & Co sind im Moment mitten in der überarbeitung. Da muss man sich über Speicherleaks nicht aufregen. Mir ists auch leiber die Lazarus internen sachen zu verwenden als externe bei denen man nie weiss wie und wann und ob sie weiterentwickelt werden. Ich weiss das du an deinem OpBitmap weiterarbeitest trotsdem versuche ich sowas zu vermeiden wo ich kann. Ich kann Eugens Einstellung schon verstehen. ich benutz auch lieber SqlDB statt ZeOS auch wenns instabiler ist. Weil ich weiss dass es sich irgendwann nathlos ins Lazarus intigrieren wird und auch noch direkt dabei ist.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Das ist irrational und zeigt, dass man's nicht verstanden hat.Christian hat geschrieben: Ich weiss das du an deinem OpBitmap weiterarbeitest trotsdem versuche ich sowas zu vermeiden wo ich kann.
OpBitmap ist stabil und fertig. Es ist reines Assemblerfreies und LCL/VLC/CLX - freies ObjectPascal/Delphi. Es läuft auf FPC, Delphi und Kylix und auf 64bit ohne X-Server und nix.
Es hat überhaupt keine Abhängigkeiten und wird in "hundert Jahren" noch funktionieren

Die LCL-abhängigen Funktionen (Zwei!!) sind in lazbridge.
D.h. du kannst heute tausende Zeilen Code für Opbitmap schreiben und alles was jemals ggf für die nächste LCL Überarbeitung angepasst werden muss, sind die zwei Funkionen in lazbridge. Das ist mir jedenfalls lieber als tausende Zeilen anzupassen.
Mir ist's egal was du machst, aber ein bisschen Einarbeitung in die Materie (auch bezüglich LazInfImage) wäre besser als dumpfe Vorurteile zu verbreiten.
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Darum gehts doch gar nicht. Es geht (mir zumindest) darum das ich es extra verbreiten udn auf jeder meiner entwicklungsmaschienen aktuell halten muss. Du bietest kein SVN oder sonstige Möglichekit an es aktuell zu halten. Verbreiten tust dus auch nicht über offizielle wege (Wiki) sondern nur hier es geht doch schon los was ist wenn Monta plötzlich mal kein geld mehr hat und kurzfristig entscheidet den Server vom netz zu nehmen. Oder du aus irgendwelchen gründen mal aufhörst. Bei den Lazarus internen Sachen kann ich mit 80%iger Warscheinlichkeit davon ausgehn das sie immer weiter existieren und gepflegt werden. Es ist warscheinlicher das Delphi vorher in der Versenkung verschwindet als das es Lazarus mal nicht mehr gibt. Alle teile von Lazarus existieren in jeder version weiter durchs Versionsmanagement und es ist durch dasselbige einfach updatebar. Das geht keinesfalls gegen die Funktionalität oder genailität des Konzeptes.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Mit dem gleichen Argument kannst du auch auf LNet, Synapse und Indy verzichten.
opbitmap.pas wird sich nicht ändern und immer funzen, es sei denn FPC wird low-level zu sich selber, und Delphi inkompatibel. Und die zwei Funktionen in lazbridge kannst du im allerschlimmsten Fall auch selber anpassen.
Deiner Einstellung entnehme ich, dass du auch WOPR meiden wirst.
Wie gesagt, mir ist's egal.
opbitmap.pas wird sich nicht ändern und immer funzen, es sei denn FPC wird low-level zu sich selber, und Delphi inkompatibel. Und die zwei Funktionen in lazbridge kannst du im allerschlimmsten Fall auch selber anpassen.
Deiner Einstellung entnehme ich, dass du auch WOPR meiden wirst.
Wie gesagt, mir ist's egal.
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Zumindest LNet wird im SVN gepflegt, und ich hab das starke gefühl das es wohl bald ins Lazarus intigriert wird. Indy hab ich noch nie benutzt und Synapse weicht langsam LNet wobei es noch nicht alles ersetzen kann. Aber dort ist mir auch der Support zu schlecht. Wenn ich patches schicke erwarte ich wenigstens eine Rückmeldung
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/