AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Mathem. Parser -- bitte testen

Mathem. Parser -- bitte testen

Ein Thema von dizzy · begonnen am 23. Mai 2004 · letzter Beitrag vom 2. Okt 2013
Antwort Antwort
Seite 7 von 10   « Erste     567 89     Letzte » 
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#1

Re: Mathem. Parser -- bitte testen

  Alt 8. Jul 2004, 00:13
  • Delphi 6 Personal
  • Compiliert wunderbar und die Ergebnisse stimmen
  • AMD Athlon XP 1800+ 1533,333 Mhz

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

Dani H.
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: Mathem. Parser -- bitte testen

  Alt 8. Jul 2004, 11:03
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.
Ü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.
Angehängte Dateien
Dateityp: exe test_129.exe (68,0 KB, 24x aufgerufen)
Dateityp: c test.c (1,5 KB, 25x aufgerufen)
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#3

Re: Mathem. Parser -- bitte testen

  Alt 8. Jul 2004, 12:13
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
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

Re: Mathem. Parser -- bitte testen

  Alt 9. Jul 2004, 15:34
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.
Angehängte Dateien
Dateityp: dpr test2.dpr (2,2 KB, 24x aufgerufen)
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Mathem. Parser -- bitte testen

  Alt 9. Jul 2004, 16:11


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


...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
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#6

Re: Mathem. Parser -- bitte testen

  Alt 9. Jul 2004, 18:03
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!
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Mathem. Parser -- bitte testen

  Alt 9. Jul 2004, 18:42
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 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 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:
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
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#8

Re: Mathem. Parser -- bitte testen

  Alt 9. Jul 2004, 18:56
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!
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
mrsiemens

Registriert seit: 8. Nov 2004
13 Beiträge
 
#9

Re: Mathem. Parser -- bitte testen

  Alt 8. Nov 2004, 18:23
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
Angehängte Dateien
Dateityp: pas cqparser_892.pas (37,3 KB, 30x aufgerufen)
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Mathem. Parser -- bitte testen

  Alt 8. Nov 2004, 18:31
Hi,
ich würde dich bitten diese langen SourceCodes als PAS-Datei anzuhängen.

Danke,
Chris
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 7 von 10   « Erste     567 89     Letzte » 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 05:37 Uhr.
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