Delphi-PRAXiS
Seite 7 von 11   « Erste     567 89     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Mathem. Parser -- bitte testen (https://www.delphipraxis.net/22764-mathem-parser-bitte-testen.html)

Dani 8. Jul 2004 00:13

Re: Mathem. Parser -- bitte testen
 
  • Delphi 6 Personal
  • Compiliert wunderbar und die Ergebnisse stimmen
  • AMD Athlon XP 1800+ 1533,333 Mhz

1195,79
1992,97
4718,33
8877,55

:hi:

neolithos 8. Jul 2004 11:03

Re: Mathem. Parser -- bitte testen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich habe heute für mal schnell eine Stackmaschine zum Testen geschrieben.

Das Ergebnis sieht wie folgt aus.

Deine Parser brauch ca zwischen 3000 bis 3400 ms.
Meine Stackmaschine brauch ca zwischen 2800 bis 3100 ms.

Dieses Ergebnis kann man als gleichschnell bewerten. :gruebel:
Übrigens: Musste ich alle Tricks in C Anwenden, um native Stack-Operationen zu vermeiden. Sonst würde meine Maschine ein wenig über deinen Werten liegen. Aber das waren auch nicht viele ms. (glaube zw. 3900 und 4200 ms).

Als Anhang gibt es das Saumäßig in der Schnelle getippte C-Programm.

NicoDE 8. Jul 2004 12:13

Re: Mathem. Parser -- bitte testen
 
Zitat:

Zitat von dizzy
  • welche Dephi-Version hast du?
  • läufts/compilierts damit?
  • sind die Ergebnisse im Testprog korrekt?
  • CPU-Typ + Realtakt
  • die Ergebnisse der Geschwindigkeitsmessung des Testprogs
  • ist die Implementierung hübsch und sauber? (keine Leaks, styleguidekonform, verwendete Techniken...)
  • hälst du den Parser für sinnvoll/einsetzbar?
  • Verbesserungs- und/oder Verschönerungs- und/oder Verschnellerungsvorschläge?

  • Delphi 6 Personal Edition, Update Pack 2, RTL Update 3
  • compiliert und läuft damit
  • Ergebnisse sind korrekt
  • Mobile AMD Athlon 64 Processor 2800+ (x-1800 MHz)
Windows XP x86

848,759
1421,61
3571,95
7007,47

Windows XP x64 (Debug)

-7717,32
-13012,8
-31220
-61769,2


Gruss Nico

neolithos 9. Jul 2004 15:34

Re: Mathem. Parser -- bitte testen
 
Liste der Anhänge anzeigen (Anzahl: 1)
So jetzt wie versprochen (in der PN) die Pascal'sche Variante.

Übrigens sind es zwei Versionen in einer Datei:

Die erste Ausgeklammerte lag bei ca 4000 ms. Also schneller als die gleichwerdige C-Variante. Ein hoch auf den Borland-Compiler-Optimierer.

Die jetztige Variante, die CALL's vermeidet, liegt auch im Limit.
zw. 3000 und 3200 ms.

Also ein Tick langsamer als die C-Makro-Variante. Sind aber auch mehr Call's trinne.

dizzy 9. Jul 2004 16:11

Re: Mathem. Parser -- bitte testen
 
:shock:

Formel: (1 + sin(pi/2))^3 * 2
Durchläufe: 5.000.000
Messmethode: GetTickCount

Mein Parser als DLL-Version: 1450ms
Als eingebundene Unit: 1530ms :?: DAS wundert mich schon etwas...
Deine Stackmaschine: 1312ms

:cry:
...ich spiele mit Umbaugedanken... *gnarf* ;)

\\edit: Ich hab nen kleinen Fehler gemacht! Mein Parser hat das pi/2 immer wieder neu ausgerechnet - scheinbar klappt die Vorausberechnung von Konstanten noch nicht so ganz :?
Wenn ich mit einer Variablen=pi/2 rechne siehts so aus:

DLL-Version: exakt gleich schnell wie die Stackmaschine: 1312ms
Unit: nur 1455ms


Ich muss aber ganz offensichtlich noch mal an meinen Optimierer ran! Eigentlich ist ja die ganze Formel konstant, und von daher sollte die gesamte Formel zu einem Baum mit nur einem Knoten=16 zusammenschrumpfen. Das tut er ganz offensichtlich nicht! Mist :)

neolithos 9. Jul 2004 18:03

Re: Mathem. Parser -- bitte testen
 
Bei meinem Optimierer tut er das auch!

Da entsteht nur noch "push 16"!

Ich könnte meine Kenntnisse eventuell mit einfließen lassen!
Hinsichtlich Scanner -> Parser -> Compiler -> Virtuelle Maschine.


Dann könntest du auch den wunsch von beliebigen Variablen erfüllen!

dizzy 9. Jul 2004 18:42

Re: Mathem. Parser -- bitte testen
 
Zitat:

Zitat von neolithos
Bei meinem Optimierer tut er das auch!

Bei mir jetzt auch :)
Grad noch gefummelt... war, wie eigentlich immer, nur ein ganz kleiner blöder Patzer.

Zitat:

Zitat von neolithos
Ich könnte meine Kenntnisse eventuell mit einfließen lassen!
Hinsichtlich Scanner -> Parser -> Compiler -> Virtuelle Maschine.

Das würde mich glaube ich sehr glücklich machen. Ich habe von Compilerbau im theroetischen Sinne nicht wirklich viel Plan, das kommt noch an der FH. Müsste sogar kommendes Semester was werden.
Das Ding hier hab ich mir über längere Zeit zusammen gebastelt, und ausgebaut, und hab das Thema dabei etwas mit-gelernt. Aber so richtig in die Tiefe kommt man ja doch nicht.

Zitat:

Zitat von neolithos
Dann könntest du auch den wunsch von beliebigen Variablen erfüllen!

Auch mit meinem hübschen Bäumchen? :) Würd's gerne so lassen, da sich ja nun herausgestellt hat, dass beide Verfahren ja nun wirklich gleich schnell sind... Schon erschreckend gleich schnell *g*

Hatte mir da schon was mit arrays überlegt, in die der Benutzer selber Variablennamen eindefinieren könnte, in der Art:
Delphi-Quellcode:
DefineVar('var01', pi);
Da ließe sich auf diesem Wege bestimmt was machen. Bin da aber (noch) für alles offen (ist ja noch keine Zeile zu geschrieben ;)).

Die neue Version mit funktionierendem Pre-Solving schiebe ich in den anderen Thread mit der Final-Version.


Vielen Dank für dein Interesse und Unterstüzung!!
gruss,
dizzy

neolithos 9. Jul 2004 18:56

Re: Mathem. Parser -- bitte testen
 
Vielleicht hast du es gesehen!

Ich mache mir derzeit eine Rübe wie man die Formel direkt als IA-32 Befehl in den Ram ablegen könnte, und ausführen.

Leider sind meine ersten Test's noch nicht ganz geglückt.

Das wäre aber die schnellste Variante. Und wäre auch eine schöne Übung, welche mich näher an mein Ziel heran bringt.

Einen eigenen Compilier! :spin:

mrsiemens 8. Nov 2004 18:23

Re: Mathem. Parser -- bitte testen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe mal den Parser um die Funktion erweitert, beliebig viele Konstanten in der Formel zu benutzen...
Einfache Zuweisung mittels SetVariable(String, const Value)


Vielleicht brauchts ja jemand :)

CalganX 8. Nov 2004 18:31

Re: Mathem. Parser -- bitte testen
 
Hi,
ich würde dich bitten diese langen SourceCodes als PAS-Datei anzuhängen.

Danke,
Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:19 Uhr.
Seite 7 von 11   « Erste     567 89     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz