Benchmark Test bzw ein Versuch dazu^^

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

Wow damit sieht man die großen unterschiede , schon heftig, denke mal dieser Thread wird auch für spätere Komponente / Programme hilfreich sein ^.^

pluto
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)

Beitrag von pluto »

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 ?
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10921
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Naja, messen kann man vieles, die Frage ist, ob man auch weiss was man misst. ;-)
pluto hat geschrieben: theo du meinst wirklich das umrechen der RGB werte dauert wirklich so lange ?
Nicht nur, es werden dort auch noch Bereichs-Prüfungen gemacht.
Mit Scanline liegt die Verantwortung bei dir.

Christian
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:

Beitrag von Christian »

Und TBitmap mit Scanline ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10921
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Hat deine LCL dieses Property? Meine nicht.

http://svn.freepascal.org/cgi-bin/viewv ... 20&r2=8221" onclick="window.open(this.href);return false;

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

Hat jemand nen beispiel für TLazIntfImage Scanline? das example im Lazarus Ordner ist mir zu hoch^^

Christian
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:

Beitrag von Christian »

Stimmt, ich dachte immer as ginge mittlerweile auch über TBitmap, es gab da mal disskussionen auf der Mailingliste zu wird aber über TLazIntfImage gemacht siehe dem scanline example.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10921
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

EugenE hat geschrieben:Hat jemand nen beispiel für TLazIntfImage Scanline? das example im Lazarus Ordner ist mir zu hoch^^
Nimm (wenn schon) OpBitmap dafür. Da funzt Scanline wie bei Delphi.
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
Dann kompiliert's.
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;
Müsste einen grünen Block zeichnen.

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

Wie schon geschrieben , ich werde es erstmal mit LazIntfImage probieren , wenn das das Problem auf Linux nicht löst versuche ich OpBitmap ^^

Benutzeravatar
theo
Beiträge: 10921
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

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;

Christian
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:

Beitrag von Christian »

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/

Benutzeravatar
theo
Beiträge: 10921
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben: Ich weiss das du an deinem OpBitmap weiterarbeitest trotsdem versuche ich sowas zu vermeiden wo ich kann.
Das ist irrational und zeigt, dass man's nicht verstanden hat.
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.

Christian
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:

Beitrag von Christian »

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/

Benutzeravatar
theo
Beiträge: 10921
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

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.

Christian
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:

Beitrag von Christian »

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/

Antworten