AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Firemonkey Performance

Ein Thema von Peter666 · begonnen am 5. Jun 2012 · letzter Beitrag vom 23. Apr 2013
Antwort Antwort
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#1

Firemonkey Performance

  Alt 5. Jun 2012, 23:16
Hi,

Ich habe hier ein ganz schön ärgerliches Problem. Die Performance von Measuretext und Filltext ist unterirdisch bei D2D und unter OSX. Das konkrete Beispiel ist ein 80x25 Zeichen großes Textfeld in einem Canvas (einfach ausgedrückt). Die Zeichen werden einzeln Nacheinander in das Canvas geiendert. Erst die Breite des Zeichens bestimmt und dann mit Filltext an die Position gebracht. Das geschieht sekündlich und ist extrem langsam. Mit GDI+ habe ich eine Prozessorlast von weniger als 1%, bei D2D und unter OSX ist das eine Last von 10%. Ich kann das zwar durch einen Rasterizer umgehen (es werden die Zeichen in Texturen gespeichert und dann von da Auschnittsweise kopiert). Für das Problem ist dies aber leider nicht anwendbar. Und nein es geht auch nicht das anderweitig zu realisieren.
Im Prinzip brauche ich das nur unter OSX. Kennt Jemand eine alternative Methode dort ein Textzeichen auf ein Canvas zu rendern?

Peter
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Firemonkey Performance

  Alt 5. Jun 2012, 23:45
Im Prinzip brauche ich das nur unter OSX.
Wäre es hier vermessen, auf ein Programmiertool zu verweisen, dass auf der Plattform etwas heimischer ist als Delphi?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#3

AW: Firemonkey Performance

  Alt 6. Jun 2012, 07:22
Jein, das komplette Projekt besteht aus 6mb Quellcode und ich zur gänze möchte ich es ungern nach ObjectiveC umsetzen, davon abgesehen finde ich XCode und ObjectiveC nicht so hübsch wie Delphi.
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#4

AW: Firemonkey Performance

  Alt 6. Jun 2012, 08:18
Edit: Ignorieren
Lars
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#5

AW: Firemonkey Performance

  Alt 6. Jun 2012, 08:19
Schau dir doch mal diesen Artikel an:

StackOverflow

Da gibts noch ein paar Booleans die man auf True/False stellen könnte für die Performance
Lars
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Firemonkey Performance

  Alt 6. Jun 2012, 10:45
Oder besser gleich auf Vektorgrafik setzen, den das ist die Grundlage von FMX
Markus Kinzler
  Mit Zitat antworten Zitat
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#7

AW: Firemonkey Performance

  Alt 6. Jun 2012, 12:22
Hallo Markus, irgendwie wusste ich das das jetzt kommt - Nein das Problem ist definitiv nicht mittels Vektorgrafik zu lösen, davon abgesehen bringt das auch nix. Ich frage mich warum man stets unbelesen dieses "Totschlagargument" widerkäut. Die Basisfunktionen (dazu gehört die Textausgabe) bauen auch auf das was unter FMX.Canvas.MAC, FMX.Canvas.GDIP bzw. D2D hinterlegt ist auf. Was nützt mir eine Ferrarikarosserie, wenn darunter ein Trabbimotor werkelt? Das zieht sich wie ein roter Faden durch das ganze Firemonkey. Überall wo man reinguckt findet man Codepassagen, wo man sich ernsthaft fragt wer so etwas durchgehen lässt. Was nützt mir ein optimierter Rest wenn die Grundfunktionen so dermaßen unperformant sind das jeder Versuch etwas zu optimieren fehlschlägt.

Auch extrem nervig sind die Memoryleaks, so fehlt beispielsweise bei: procedure TCanvasQuartz.FillText ein CFRelease(str); am Ende und das gleiche gilt bei MeasureText. Das sind nur die beiden Funktionen die ich mir problembezogen angeguckt habe.

Peter

Geändert von Peter666 ( 6. Jun 2012 um 12:33 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Firemonkey Performance

  Alt 6. Jun 2012, 14:00
Weil man hat saut blöd ist. Aber man überlässt die Sache nin den absoluten Spezialisten.
Markus Kinzler
  Mit Zitat antworten Zitat
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#9

AW: Firemonkey Performance

  Alt 7. Jun 2012, 09:30
Naja ich halte mich nicht für einen Spezialisten und ehrlich gesagt bei dem Preis was ein Upgrade kostet sehe ich das auch gar nicht ein.
Ich habe meinen alten Font-Rasterizer ausgekramt und auf Firemonkey lauffähig gemacht - ursprünglich war dieser für OpenGL und D3D Zwecke entstanden.
Der erstellt bei Bedarf die gewünschten Unicodezeichen in einer bzw. mehreren (wenn Platz nicht ausreicht) großen Textur(en) und übergibt die notwendigen Koordinaten.
Das ist zwar nicht das was ich erhofft habe, aber Cocoa will ich mir nicht wirklich antun.

Peter
  Mit Zitat antworten Zitat
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#10

AW: Firemonkey Performance

  Alt 23. Apr 2013, 17:47
Nachdem die XE4 Demo nun veröffentlicht ist, habe ich mal interessehalber damit "gespielt. Was mir gefallen ist, ist dass die Action-listen (gibts seit XE3, ich weiß) gut funktionieren und die Firemonkeykomponenten einfacher zu bedienen sind. Teilweise habe ich zumindest den Eindruck ist alles auch etwas flotter. Leider aber nicht so das ich das ernsthaft für Crossplattformentwicklungen nutzen würde. Insbesondere wenn man viel mit TBitmaps und Canvas arbeiten muss.
Das beiliegende Demo veranschaulicht das ganze (hoffentlich) etwas. Die Delphi7 Version (da nutze ich GDI+) ist um Faktor 1000 schneller. Mir ist klar das der Code in der Form nicht wirklich sauber geschrieben ist und das man einiges dabei beschleunigen kann, aber darauf kommt es mir nicht an. Ich habe mir auch keine Mühe bei der Portierung von Java (http://www.java4k.com/index.php?acti...d=view&gid=302) gegeben, deswegen auch die katastrophalen Variablenbezeichner und das alles in einer Schleife-Disaster.

Peter
Angehängte Dateien
Dateityp: zip sample.zip (7,1 KB, 23x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 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