Beschleunigen eines CodeParsers
Übersicht

![]() |
ArtemisBetreff: Beschleunigen eines CodeParsers |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo zusammen.
Ich arbeite zur Zeit an einem CodeParser, welcher einen String in einen formatierten String umwandelt. Jetzt hab ich 4 Variablen.
Meine Überlegung is folgende. Code: [AUSKLAPPEN] Schleife, die alle Wörter in dem Array durchläuft
Schleife, die alle Zeichen in dem String vor den Wörtern durchläuft Schleife, die alle Zeichen in dem String nach den Wörtern durchläuft Text = replace(Text, VorDemString+Wort+NachDemString, VorDemString+"FarbeStart"+Wort+"FarbeEnde"+NachDemString) } } } Hier hätte ich drei Schleifen (wenn es mehrere Wort Arrays gibt, sogar vier). Meine Frage: Kann ich das irgendwie kürzen, sodass ich eine Schleife weniger habe? thx jonas |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jain. Mit umstrukturieren des ganzen könntest du es beschleunigen.
Denn bestimmte Vor- und Nach Wörter können ja nur um ein bestimmtes Wort kommen. Also solltest du das vielleicht direkt irgendwie mit dem Wort verbinden. Die Wörter selbst kannst du mittels Hashing direkt in einen Array speichern. Damit kannst du das Suchen drastisch beschleunigen, weil du nicht komplett durchgehen musst, sondern mehr oder weniger direkt anspringen kannst. Auf jeden Fall dürfen die Schleifen nicht so verschachtelt werden sondern nach einander aufgerufen werden. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() Wie das geht hab ich nicht verstanden. Könntest du das ein bissel genauer erklären? Bitte! ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1. Statt Keywords in den Array speichern und den dann komplett durchsuchen zu müssen, speicherst du die Keywords mittels Hashing. Das beschleunigt das suchen und je mehr Keywords du hast desto mehr beschleunigt es sich!
2. Pre- und Post-Wörter: Diese können ja nur mit bestimmten Keywords in Erscheinung tretten. Deswegen würde ich diese zusammen mit dem Keyword selbst "verbinden". Eine simple möglichkeit wäre zum Beispiel Keywords in Form eines Types zu machen. Dann kannst du in diesem Type 2 Listen integrieren. Eine Liste mit den PreWords und eine mit den PostWords. Dadurch würde das entsprechende Suchen drastisch beschleunigt werden. Das sind lediglich generelle Ideen ... Es gibt gewiss auch beträchtlich effizientere Ideen als das ... Müssteste notfalls googlen, gibt da sicher was bezüglich texthighlight oder codehighlight |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also erstmal thx für die Hilfe.
1. ich hab keine ahnung, wie das mittelst hashing gehen sollte 2. ich verstehe nicht, warum die pre und post-wörter nur mit bestimmten keyword auftreten können 3. unter google finde ich nix vernünftiges. 4. ich hab hier noch ein beispiel in c#, da steig ich aber nicht durch |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1. Solange du nicht verstehst was hashing macht, ist dies durchaus verständlich. Wirst dich wohl oder übel mit richtiger Informatik beschäftigen müssen, wenn sich das ändern soll
2. Naja das war eine Annahme, dass nur bestimmte kombinationen möglich sind (zum beispiel macht ein "wend" als blockending eines If 0 sinn etc). Kann auch anders sein, dann macht diese Optimierung natürlich keinen sinn. Pre- und Post Words können ja eigentlich nur als "vorgegebene" kombination auftreten. wenn du ein setxy hast und später ein setxz dann stehen die in keinster relation zu einander und müssen eigentlich auch nicht mit einander verglichen werden. 3/4. Naja solche beispiele gibts halt nur für sprachen die für entsprechende Projekte benutzt werden, was normalerweise C++ oder C# ist (oder VB oder Delphi, ich weiss). Es gibt jedoch auch Editoren die in PureBasic geschrieben ist, müsstest dort mal schauen, der Code sollte dir verständlicher sein. Aber selbst dann musst du dich erst mit der Theorie und den Ideen dahinter beschäftigen ... sonst ist da nix zu machen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group