neuer Highlighter Test

Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

klepto2

Betreff: neuer Highlighter Test

BeitragDi, März 07, 2006 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, ich arbeite gerade an einem Highlighing system für die BMax textarea und bräuchte mal ein paar daten bzw tests:

Hier ist der Link: http://www.eastwestgames.de/file.php?id=184

Ich bräuchte von euch die größe der Datei, die ihr geladen habt,
die Zeit in Millisekunden und die Anzahl der Keywords.
Die letzten beiden Sachen könnt ihr aus dem StatusText nach dem laden entnehmen.

Es sind noch kleinere bugs drin, die aber bereits zum Teil gelößt sind. Ebenso arbeite ich gerade and den Multiline Comments.

Danke.

PS: Die Keywords im StatusText beziehen sich auf die in den Modulen enthaltenen Funktionen, Types, Methoden und Konstanten. Vielleicht könnt ihr noch kurz euren eindruck gegenüber der Geschwindigkeit äußern.
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu
  • Zuletzt bearbeitet von klepto2 am Fr, März 17, 2006 13:03, insgesamt einmal bearbeitet

Justus

BeitragDi, März 07, 2006 14:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ladezeit: 287 Millisekunden
Keywords: 9336
Code: 640 Zeilen

YellowRider

Ehemaliger Admin

BeitragDi, März 07, 2006 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Datei: 50kb, 1487 Zeilen
Ladezeit: 1169ms
Keywords: 10441

mfg
YellowRider
 

Dreamora

BeitragDi, März 07, 2006 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ladezeit: 13208
Keywords: 15410
Size: maxide.bmx


Finde ist genau so langsam, wie der originale ...
Benutzt du einen ähnlich ineffizienten Ansatz?

Für effizientere Ansätze kannst du Mal nach lexical analyzer oder flex googeln.

zb
http://www.gnu.org/software/flex/
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

eleXity

ehemals "BlackProgrammer"

BeitragDi, März 07, 2006 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Loading Time : 13230 ms
Keywords : 22811
Size : 122 kb (maxide.bmx)

Ladezeit ist ein bissche lang ... Smile

MFG
nVidia 570GTX | AMD Phenom II X6 | 8 GB RAM | 1TB | Win 7 Ultimate 64 SP1 | B3D, BMAX, BP, C#

Projekt : Worklog

Jan_

Ehemaliger Admin

BeitragMi, März 08, 2006 9:21
Antworten mit Zitat
Benutzer-Profile anzeigen
5558 millisecs
7144 KEyWords
117 KB (mapengine.bmx)
between angels and insects
 

klepto2

BeitragMi, März 08, 2006 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal danke für die Ergebnisse.
Natürlich ist das mit sicherheit nicht der schnellste Highlighter, wobei das Problem eher an der Geschwindigkeit des Richedit COntrols liegt, das BMax verwendet. Angenommen ich lasse das einfärben weg, dann verbessern sich die Zeiten bei mir (von Dateien die davor ca. 10000 ms gebraucht haben) auf etwa 1000 ms.

@Dreamora:
ich hab mir auch schon die ganzen Lexer angeschaut und viel davon gelernt.
Trotzdem Danke.

PS: noch ein vergleich: bei mir braucht er für die glew.bmx im pub ordner :
MaxIDE : ca. 25 - 30 Sec
mein Highlighter : 9187ms

Also müsste meiner etwas schneller sein Wink
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu
 

Dreamora

BeitragMi, März 08, 2006 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder dein Computer so langsam Wink

Also bei mir sind MaxIDE als auch deine gleich langsam beim laden des Sources. (in der Zeit kann es Blide auch bald laden, nur dass das vorher noch die gesamten Module keywords reinholt für code completition)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

klepto2

BeitragMi, März 08, 2006 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Also das macht meiner ja auch (im gegensatz zur MaxIDE). Und selbst wenn mein Computer langsam wäre, dann müsste er ja dennoch beides mal die selbe Zeit brauchen Wink und das ist bei mir nicht der Fall.

Wie gesagt, das größte Problem ist der Befehl FormatTextAreaText oder sein OOP equivalent. Wenn ich das weglasse und nur parse, dann braucht er für die glut.bmx knapp 1 sek (mit vorbereitung auf ein etwaiges Intellisense system)
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu
 

Dreamora

BeitragMi, März 08, 2006 13:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Und warum benutzt du ihn dann? Smile
Habe letzthin einen Artikel gefunden wo das genau nicht gemacht wurde weil es zu langsam ist.
Anstelle dessen wird der gesamte Text gerendert und danach wird einfach das was highlightet werden soll nochmal mit der entsprechenden Farbe drüber gezeichnet. Das ist scheinbar viel schneller.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

klepto2

BeitragMi, März 08, 2006 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du mir jetzt noch sagen könntest, wie man das am besten macht Wink
vorallem mit Bmax befehlen. Ich denke mal um das zu machen, müsste man ein eigenes Control schreiben und portieren, nur da hörts bei mir mit meinen rudimentären C Kenntnissen auf.
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu
 

Dreamora

BeitragMi, März 08, 2006 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Da kommt das Problem: Die Page war noch net ma C sondern auf ASM zugeschnitten.

Aber allgemein ist die Idee dahinter, dass du erst schwarz schreibst (oder was die Grundfarbe ist) und danach jede andere Farbe. dadurch musst du nicht die ganze zeit hin und her wechseln, was ja das hauptproblem ist.
Damit das funktioniert, musst du dich beim WM_PAINT Event reinhängen und dort diese eigene Übermalfunktion integrieren.
Bei der MaxIDE geht das leider nicht so einfach, da sie ihre zuweisungen etc scheinbar nicht an einem punkt machen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

klepto2

BeitragFr, März 17, 2006 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
So, ich hab noch mal ein paar optimierungen gemacht.
1. Es wird nur der aktuell sichtbare Teil gehighlighted.
2. Wird nachdem jede Zeile einmal gehighlighted wurde, die Überwachung
für scrolling abgeschaltet.

Bitte um Feedback:
http://klepto2.kl.funpic.de/DL/highlighttest2.exe

Danke
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu

TheShadow

Moderator

BeitragFr, März 17, 2006 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
RichtEdit ist Schrott - besser ist Scintilla... nur da muß man irg. noch eigenen Lexer in C++ coden
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

Dreamora

BeitragFr, März 17, 2006 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
RichEdit ist net Schrott.
Die verwendete Methode mit den Textstyles (WM_ irgendwas) ist das Problem, diese ist nämlich "sehr zeitintensiv" (du sagst ja auch net, das OpenGL Schrott ist, nur weil Texturenwechseln seine Zeit braucht. Das wäre exakt das gleiche, wenn du dort die Objekte so anzeigen lassen würdest, das jedes zweite eine andere Textur hat), weswegen das ständige wechseln Selbstmord ist.
Sollte aber eigentlich jeder wissen, der eine IDE für ein kommerzielles Projekt macht, da selbst ich als Totalnoob die entsprechenden Artikel in 2min gegoogelt hatte ...
Dieser Zeitaufwand ist auch der Grund warum er nie fertig wird mit Sources einlesen bzw. warum gewisse Projekte glei die IDE töten.
Der gesamte Source wird eingefärbt und net nur der Teil der gerade sichtbar ist. Eigentlich ja für jeden einleuchtend, dass das so Mist ist (speziell Spieleprogrammierer sehen sowas normalerweise intuitiv, das man nicht "alles" zu betrachten braucht, wenn man nur einen Teil braucht)

Naja ist BRL, mit IDEs und Dokumentationen haben sie es ja bekanntlich nicht so. Sind eher die "Modulprogrammierer" Smile (glaub immer noch, das war der Grund warum BM überhaupt Module hat. Damit Mark an einem Modul arbeiten kann und wenn er die Motivation verliert an einem anderen, ohne das sonstwas kaputt geht. Für die User kanns net so gedacht sein, dafür ist die Anbindung an C++ zu nervtötend und eigene Module zu "nicht extend" fähig)

Würde allerdings wohl aus Erfahrung mit IDEs für DBP und PB die auf Scintilla basieren auch dazu raten, da Mal reinzuschauen Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

TheShadow

Moderator

BeitragFr, März 17, 2006 19:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora - ich kenne mich mit RichEdit-Kontrollierung über WinAPi nicht so aus - aber wenn es schlecht implementiert ist, dann muß es neu gemacht werden...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

Dreamora

BeitragFr, März 17, 2006 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Müsste, ja.
Bin aktuell immer noch dabei, herauszufinden wie das Highlighting prinzipiell läuft im Editor etc.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

klepto2

BeitragFr, März 17, 2006 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt mehrere Tweaks, um das Highlighing mit Richedit zu optiemiren, zum Beispiel das unterdrücken des Redraws, während des einfärbens, oder das verhindern von Nachrichten verarbeitung der Richedit. Diese sind jedoch schon im Source der BMAxGui implementiert. wenn das problem mit den flackernden scrollbars nicht wäre, dann wäre ich mit meinem Highlighter ganz zufrieden. Denn ich glaube nicht das es soviel schneller geht, ohne die verwendung von speziellen Controls oder hacks.
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu

TheShadow

Moderator

BeitragSa, März 18, 2006 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hatte mal einen highlighter für html gecodet... hab eig. meiner meinung gut optimiert - es war saulahm. dann hab ich scintilla genommen - da ist sowas schon eingebaut - und ist pfeilschnell - so wie es sein muß...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

FOODy

BeitragSa, März 18, 2006 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
was ist scintilla eigentlich???

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group