Performance verbessern

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Performance verbessern

Beitrag von Tom »

Ja, das sollte man eigentlich erwarten können. Aber, hey, vielleicht ist es ja in der 4.0 enthalten.
Herzlich,
Tom
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Performance verbessern

Beitrag von ramses »

@Tom:

Hi, Hi, Hi, wenn der Verlauf der Versionsnummern so bleibt wie in den vergangenen Jahren bin ich bis zur Version 4.0 ganz sicher längst in Rente .........
Dazu schaffe ich mir einen Wohnwagen an, zum rumreisen aber sicher ohne PC im Inventar...
Valar Morghulis

Gruss Carlo
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Performance verbessern

Beitrag von Jan »

So vehement wie Steffen auf den Konferenzen bei Fragen in der Richtung immer gegen Multi-Kerne argumentiert, wird das zu unseren Lebzeiten nicht mehr kommen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Performance verbessern

Beitrag von ramses »

Hallo Jan

das verstehe ich ganz und gar nicht. Vielleicht ist ja auch der Aufwand zu gross?

Vielleicht ist genau dies aber auch das Seefeuer welches das Schiff "Xbase" nicht ..........

Mein oben erwähnter Freund hat mir mit seinen C Programmen und L&L vorgeführt was mit paralleler Verarbeitung in mehreren Threads auf mehreren Kernen so möglich ist.

Wenn du das siehst und mit deinen eigenen Programmen vergleichst dann gehst du einfach nur noch deprimiert nach Hause.
Valar Morghulis

Gruss Carlo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Performance verbessern

Beitrag von brandelh »

Die Performance hängt nicht an mehreren Kernen :!:

Es gibt Programme die - wegen Ihrer Aufgaben - mehrere Kerne sinnvoll nutzen können, aber das ist ein anderes Thema.
Xbase++ gibt uns viel einfache Bedienung, aber wohl auf Kosten der Performance.

Beispiel, gestern musste ich meiner Frau ein Programm schreiben, das aus 2 XLSX Dateien Werte holt und in eine schreibt, danach soll sie die offene Datei prüfen können, also Excel ActiveX.
Alle Feldpositionen sind bekannt, aber ich wollte nur eine kleine EXE, Xbase++ geht daher nicht:

ActiveX z.B. Excel zum Ausfüllen von Feldern. Mit Xbase++ geht das wirklich einfach, String rein, String raus, Nummer rein, Nummer raus. Aber etwas gemächlich im einzelnen Feldzugriff.

nun habe ich PowerBasic genommen, woher ich ja eigentlich stamme, die haben alles an Typen ... Strings (Ansi) WideStrings (Unicode) Variants ... ActiveX COM Browser erstellt eine LIB (Quellcode mit defines und Funktionen) ...
Und beim Zugriff bin ich fast beim Verzweifeln, immer SYNTAX ERROR .... warum ... im Internet finde ich ein Beispiel ... AHA ich muss WStrings erstellen, nach Variants umsetzen und dann an Active X übergeben ... umständlich
Beim Lesen komme ich wieder an meine Grenzen ... im Internet finde ich die Antwort, wer eine Variant liest, muss danach prüfen was da drin ist und mit speziellen Funktionen an normale Vars übergeben ... sehr umständlich ...
ABER die EXE rennt rasend schnell, hunderte Ersetzungen sofort da, da sieht man nix außer das Endergebnis in Excel, meine Frau ist begeistert und ich hab meine Leidenschaft zum Tüfteln wieder gefunden 8)

Ach JA, Powerbasic EXE 87 KB - ohne weitere nötige DLLs etc. ein Dialog ... und nur 1 Kern, denn die EXE hat keine Threads. :!: (obwohl diese möglich wären)

Die EXE ist frei für jeden Kern, ob diese tatsächlich verlegt wird weiß ich aber nicht.

Keine meiner Xbase++ EXEen erzeugen nennenswerte Last auf der CPU, die warten meist auf Eingaben. Selbst enorme Druckjobs, legen den Rechner nicht lahm (eigener Thread).
Die Art von Anwendungen (CAD, Spiele etc.) die wirklich rechnen müssen, werden nicht mit Xbase++ erstellt, dafür nimmt man C und wenn die Aufgabe sich eignet, kann man dann auch alle Kerne rauchen lassen.
Gruß
Hubert
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Performance verbessern

Beitrag von ramses »

Hallo Hubert

bei deinem Beispiel hast du recht.

je nach dem was dein Programm bearbeiten muss hängt die Gesamt Performance aber sehr wohl auch von den benutzten Kernen ab.

Ein Beispiel: Das Programm erhält einige von einander vollkommen unabhängige Aufgaben die es erledigen muss.
Jede Aufgabe startet einen Thread, in diesem wird die jeweils zugeteilte Aufgabe ausgeführt.

Stehen z.B. 60 Anfragen an werden diese nacheinander auf einem Kern ausgeführt. Könnten diese auf mehrere Kerne aufgeteilt werden könnten mehr Aufgaben in kürzerer Zeit erledigt werden.

Du hast Recht:
Xbase++ gibt uns viel einfache Bedienung, aber wohl auf Kosten der Performance.
Auch damit:
Die Art von Anwendungen (CAD, Spiele etc.) die wirklich rechnen müssen, werden nicht mit Xbase++ erstellt, dafür nimmt man C und wenn die Aufgabe sich eignet, kann man dann auch alle Kerne rauchen lassen.
Dabei hast du die Webanwendungen wie SaS, httpenpoint, cxp und wie Sie alle heissen die viele gleichzeitige Aufgaben abarbeiten müssen vergessen. Wenn du da nur wenige gleichzeitige Abfragen hast die alle z.B. auch noch ein PDF benötigen bist du mit einem Kern sehr schnell an der Grenze dessen was die Benutzer an Wartezeit noch aktzeptieren.
Aus diesem Blickwinkel ist xbase wohl nicht die richtige Grundlage für Webanwendung oder auch umfangreiche Berechnungen.
Valar Morghulis

Gruss Carlo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Performance verbessern

Beitrag von brandelh »

ramses hat geschrieben: Mi, 06. Mai 2020 11:50 Dabei hast du die Webanwendungen wie SaS, httpenpoint, cxp und wie Sie alle heissen die viele gleichzeitige Aufgaben abarbeiten müssen vergessen.
hab ich nicht, ich würde keinen Web-Server mit Xbase bauen, wenn er mehr als gelegentliche Aufrufe zu erledigen hat.
Boris muss da viel Arbeit reingesteckt haben um die Threads gleichzeitig erledigen zu lassen und eine Website zu berechnen ist nicht sooo viel Arbeit bei kleineren Firmen.

Für Web-Anwendungen gehe ich über die CGI-EXE, diese läuft kurz und wenn man will, kann man gleich den gewünschten Kern wählen (einen für eine EXE),
jede ist für sich und der Apache oder ISS kümmert sich um den Rest.

Ich denke, dass bevor die Kerne ein Problem bei Web-Anwendungen werden, geht vorher die TCP/IP Leitung bzw. der Datenbank Server in die Knie.
Aber ich mache das ja auch nur so nebenbei, wirklich Erfahrung mit großen Sachen habe ich nicht.
Gruß
Hubert
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Performance verbessern

Beitrag von ramses »

brandelh hat geschrieben: Mi, 06. Mai 2020 12:37 Boris muss da viel Arbeit reingesteckt haben um die Threads gleichzeitig erledigen zu lassen und eine Website zu berechnen ist nicht sooo viel Arbeit bei kleineren Firmen.

Ich denke, dass bevor die Kerne ein Problem bei Web-Anwendungen werden, geht vorher die TCP/IP Leitung bzw. der Datenbank Server in die Knie.
Ja, Boris hat sehr viel Zeit in sein Projekt gesteckt. Schade ist dass Alaska dies nun mit httpendpoint() versucht nachzubauen ...
Wenn du in der Webanwendung einige gleichzeitige Klicks hast für die du mit L&L ein PDF (AB/Rechnung) erstellen musst bist du mit einem Kern richtig schnell völlig Platt, bevor du die TCP/IP Leitung oder die Datenbank auch nur annähernd in die Knie zwingst.
Valar Morghulis

Gruss Carlo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Performance verbessern

Beitrag von brandelh »

Ich habe ja ein Testprogramm, das mit meiner HBPrintPDF Klasse die QuickPDF DLL (Delphi) nutzt um 10.000 PDF zu erzeugen.

Während des Laufs sehe ich normal auf die Entwicklung des Speicherverbrauchs um ein Speicherleck auszuschliesen.
Nun kann man aber auch im Resourcen Monitor die CPU Belastung sehen, ich habe einen i5-4670 also 4 echte Kerne.

Die CPU Gesamtbelastung liegt etwa bei 55%, im Hintergrund kann ich locker mein Siedler Online spielen ...

Aber man kann auch auf die einzelnen Kerne sehen:

CPU0 = 75 % Auslastung
CPU1 = 50 % Auslastung
CPU2 = 50 % Auslastung
CPU3 = 50 % Auslastung

wenn das Programm fertig ist, gehen alle wieder runter ... ich kann es nicht beweißen, aber so wie ich das sehe,
verteilt die QuickPDF DLL die Aufträge vom Xbase++ Programm auf alle 4 Kerne.

Dauer: 117 Sekunden für 10.000 PDF, also 85 PDF pro Sekunde (da steht nicht viel drin, 1 Seite Text ohne Datenbank) auf einer SSD

Ich weiß nicht wie L&L die Aufgabe erledigt, aber ich kann mir nicht vorstellen, dass es schneller ginge, wenn auch die Xbase++ Anwendung auf 4 Kernen liefe ;-)

Aber nochmal ich bin da nicht der Experte.
Gruß
Hubert
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Performance verbessern

Beitrag von ramses »

Hallo Hubert
Ich weiß nicht wie L&L die Aufgabe erledigt, aber ich kann mir nicht vorstellen, dass es schneller ginge, wenn auch die Xbase++ Anwendung auf 4 Kernen liefe ;-)
Nach Aussage des L&L Supports und den eigenen Erfahrungen erledigt L&L den Job immer auf genau dem Kern auf welchem der Thread des aufrufenden Programms läuft.

Es würde viel viel schneller, nein extrem schneller gehen wenn die Anwendung auf mehreren Kernen liefe.
Valar Morghulis

Gruss Carlo
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Performance verbessern

Beitrag von AUGE_OHR »

hi,
brandelh hat geschrieben: Mi, 06. Mai 2020 10:54 Die Performance hängt nicht an mehreren Kernen :!:
was du mit QuickPDF.DLL schilderst hatte ich auch mit Mappoint beobachtet : alle CPU-Core und HT laufen :D

nun hatte ich es mit Xbase++ ActiveX und mittels DispHelper.DLL probiert und DispHelper ist bis zu Faktor 40 (!) schneller :shock:
es ist mit "Ausgabe" am Bildschirm was ja entscheidend für die Geschwindigkeit unter GUI ist.

nun ist es NICHT der ActiveX "Befehl" der itself langsam ist ...
es ist die Xbase++ "Verwaltung" des Event System wo es nur ein "Zeit-Fenster" hat.

ich "feuere" mit DispHelper einfach alles ab bis Windows ihn Stop. :badgrin:
die Xbase++ App "füttert" Mappoint ( was eine App ist ) nur mit Daten und hat mit der Darstellung nichts zu tun.

Mappoint selbst ist nun multi-Core fähig das bei solchen Daten Sinn macht

---

wie schon gesagt muss sich 1 x CPU "um alles kümmern" und an der Stelle "könnte" man was machen.
alles was "In/Out-Put" angeht hat nichts mit Berechnungen zu tun und kann im eigenen Thread laufen.

wenn man die Daten in "kleine Häppchen" aufteilt und viele CPU-Core einsetzt dann kommt man schneller zu einem Ergebnis (ala SETI).
gruss by OHR
Jimmy
Benutzeravatar
mikehoffmann
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 133
Registriert: Mo, 21. Sep 2015 16:22
Hat sich bedankt: 1 Mal
Danksagung erhalten: 18 Mal

Re: Performance verbessern

Beitrag von mikehoffmann »

Hallo Carlo,

wenn es um Berechnungen geht und man nur LOCALs und keine Objekte verwendet, gibt es keine Möglichkeit, die Anzahl der Befehle pro Sekunde zu erhöhen. Das liegt daran, dass es keine Typen in Xbase gibt, auf die man sich verlassen könnte, und wie die Daten abgelegt werden. Das ist für Berechnungen ziemlich die schlimmste Art und Weise, die man nehmen könnte. An eine Aufteilung auf mehrere CPUs in der Hoffnung, es würde schneller, ist deswegen nicht zu denken. Ich sag's mal plakativ: 99% der CPU-Zyklen werden auf Verwaltung verballert, 1% auf die eigentliche Berechnung.

Die Sache mit den Funktionsaufrufen in Xbase bringt das zusätzliche Problem, dass Wertparameter vom Original abgekoppelt werden müssen. Das muss auch jedesmal geprüft werden. Und daran, dass der Stack nicht so einfach verwendet werden kann, wie es z.B. bei C++ der Fall ist. Da sind ein paar Dinge bei jedem Fuktionsaufruf mehr zu erledigen. Das ist alles eine Folge des zunächst wahrgenommenen Komm-vors, den uns die Sprache bietet, der aber irgendwo zu bezahlen ist. Und das sind die Kosten.

Bleibt die Frage, ob der Code des Xbase Runtime-Systems bei mathematischen Operationen besser sein könnte. Da lautet die Antwort: Nein, das eine Prozent funktioniert optimal.

Ergo: Geht nicht.

Viele Grüße
Michael
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Performance verbessern

Beitrag von ramses »

Hallo Michael

wir sind mit dem Thema ein wenig abgeschweift zu verschiedene Aufgaben parallel zu bearbeiten.

Mit dem Grundproblem hast du recht. Eine Zeitlang konnte man den Komfort der Xbase Sprache durch schnellere Maschinen noch ausgleichen. Nun müsste man in die "breite" auf mehr Kerne gehen können. Das würde jedoch die einzelne berechnung auch nicht verschnellern.

Was geholften hat ist den alten C und ASM Code in eine DLL zu packen und so aufzurufen.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Performance verbessern

Beitrag von Tom »

Nun, ich werde keinen LKW verwenden, um an einem Autorennen teilzunehmen, und wenn ich einem Kumpel beim Umzug helfe, werde ich dafür nicht den Chiron aus der Garage holen (obwohl er mal wieder an die Luft müsste). Xbase++ ist sicher keine Programmiersprache, die für mathematisch-wissenschaftliche Zwecke - etwa für Statistik, wie die Sprache "R" - genutzt werden sollte, oder bevorzugt ausgewählt, wenn ein solches Projekt konzipiert wird. Auch wenn man das inhaltlich mit dieser Sprache kann, gibt es andere Sprachen, mit denen das besser geht. Und umgekehrt. Der "Komm-Vor", wie es Michael so nett nennt, wird erkauft, wie auch die enorme Potenz einer für statistische Zwecke konzipierten Umgebung mit Nachteilen in anderen Bereichen bezahlt wird. Das ist nichts, worüber man sich beschweren muss.
Herzlich,
Tom
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Performance verbessern

Beitrag von ramses »

Hallo Tom

du hast echt eine Chiron in der Garage?? Mit der würde ich auch gerne ein wenige rumspielen...... hätte da einige Projekte ......
Valar Morghulis

Gruss Carlo
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Performance verbessern

Beitrag von AUGE_OHR »

hi,

schon mal einen VW-Bus mit Elektro Antrieb erlebt der für Dragster Rennen umgebaut wurde ...
der hängt auch einen Bugatti auf der 1/4 Meile ab

wenn man ein Fahrzeug hätte was man für den entsprechenden Zweck umrüsten könnte ...
so bleibt es bei der Software. ASM Code ist hoch optimiert und kein OOP was "relative" langsam ist.

hinzu kommt die "Verwaltung" der Xbase++ Event Schleife die immer länger wird -> koste mehr Zeit.
eine v1.8x App ist deshalb auch schneller als eine v1.9x App ... da gab es noch keinen visual Style

unnötig zu sagen das eine v1.9.x GUI App unter XP gut 20% schneller läuft als unter Windows 10 (selbe Hardware / multi-Boot)
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Performance verbessern

Beitrag von Tom »

Hallo, Carlo.
du hast echt eine Chiron in der Garage?
Klar. Aber ich fahre den selten, weil die vielen Bentleys und Lambos die Ausfahrt versperren, und mir und meinen Bediensteten ist die Umparkerei immer zu umständlich. 8)

Viel cooler als das Original ist allerdings dieser hier: https://www.youtube.com/watch?v=ImUMHbmQOoQ
Herzlich,
Tom
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Performance verbessern

Beitrag von ramses »

Hallo Tom

da haben wir wohl eine kapitale Verwechslung ..... gebastelt.

Ich dachte mit Chiron meinst du eine CNC - Werkzeugmaschine.

Zu den von dir erwähnten Automarken habe ich leider keinen Bezug.

Aber wenn schon würde mir der besser gefallen: https://youtu.be/uP7yw40HF5o
Valar Morghulis

Gruss Carlo
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Performance verbessern

Beitrag von Tom »

Äh, Carlo.
Ich dachte mit Chiron meinst du eine CNC - Werkzeugmaschine.
Aha. Es hat also keinen Sinn, Dich als Umzugshelfer zu kontaktieren, weil Du nicht mit einem Auto kämst, sondern mit einer CNC-Fräsmaschine? :wink: (Denn meine Erwähnung des (Bugatti) Chiron war in diesem Zusammenhang. Okay, mit dem kann man auch keine Umzüge machen. Aber darum ging es ja.)
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Performance verbessern

Beitrag von brandelh »

und ich dachte Ihr redet von Göttersöhnen ;-)

:arrow: https://de.wikipedia.org/wiki/Cheiron
Gruß
Hubert
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Performance verbessern

Beitrag von ramses »

Hallo Tom
Tom hat geschrieben: Di, 12. Mai 2020 9:18 Aha. Es hat also keinen Sinn, Dich als Umzugshelfer zu kontaktieren, weil Du nicht mit einem Auto kämst, sondern mit einer CNC-Fräsmaschine? :wink:
zu einem Umzug käme ich natürlich (wie immer) mit einem LKW mit einem heckbeladbaren Sattelauflieger mit festen Wänden und genügend Zurrgurten ......

Den Namen Chiron kannte ich bis jetzt nur von den CNC Maschinen die ich schon transportiert habe...... weder von gleichnamigen Autos oder wie Hubert meint Göttern habe ich je etwas gehört .....
Valar Morghulis

Gruss Carlo
Antworten