AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Altes Programm mit DP12 kompilert wird sehr langsam
Thema durchsuchen
Ansicht
Themen-Optionen

Altes Programm mit DP12 kompilert wird sehr langsam

Ein Thema von Janek.d · begonnen am 2. Jun 2024 · letzter Beitrag vom 2. Jun 2024
Antwort Antwort
Janek.d

Registriert seit: 6. Feb 2022
2 Beiträge
 
#1

Altes Programm mit DP12 kompilert wird sehr langsam

  Alt 2. Jun 2024, 17:20
Habe ein altes, mit Delphi-2007 erstelltes Programm, auf Delphi12 portiert (Unicode Anpassung).
Es werden Daten verarbeitet die über Die serielle Schnittstelle erfasst werden.
Das neue Programm scheint aber viel langsamer zu funktionieren. Habe den Eindruck dass es mit eine sehr niedrige Task-priorität ausgeführt wird.
Gibt es dafür eine Einstellmöglichkeit? Oder hängt es mit was anderes zusammen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.068 Beiträge
 
Delphi 12 Athens
 
#2

AW: Altes Programm mit DP12 kompilert wird sehr langsam

  Alt 2. Jun 2024, 17:40
Was die VCL betrifft, haben wir eher das berechtigte Gefühl, dass es schneller läuft.

Hast du die Projektdatei (DPROJ) neu erstellt?
Seit einer Weile sind die Bereichs- und Überlaufprüfungen standardmäßig aktiv, für neue Projekte.

Also bei Berechnungen und Array-Zugriffen schleichen sich nun überall zusätzliche Prüfcodes mit ein.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.585 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Altes Programm mit DP12 kompilert wird sehr langsam

  Alt 2. Jun 2024, 17:47
Die Frage ist, was genau langsamer ist. Das kann z.B. auch mit unterschiedlichem Timing bei der Threadsynchronisation zu tun haben. Ohne genauer zu wissen, was du in deinem Quelltext machst (wie du die Daten von der seriellen Schnittstelle liest und verarbeitest, ...), lässt sich das schwer beurteilen.

Hast du denn einmal z.B. mit QueryPerformanceCounter oder einem Profiler Tool geschaut, wo sich das Programm langsamer verhält?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#4

AW: Altes Programm mit DP12 kompilert wird sehr langsam

  Alt 2. Jun 2024, 18:28
TStopwatch könnte für Timinguntersuchungen hilfreich sein. Das nutzt m.W. intern QueryPerformanceCounter.
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Altes Programm mit DP12 kompilert wird sehr langsam

  Alt 2. Jun 2024, 18:42
Habe ein altes, mit Delphi-2007 erstelltes Programm, auf Delphi12 portiert (Unicode Anpassung).
Es werden Daten verarbeitet die über Die serielle Schnittstelle erfasst werden.
Wie ist dein Handling der Daten du du hier bekommst?
Legst du die in Strings ab, welche du immer wieder ergänzst/verlängerst?

Delphi-Strings sind seit D2009 Unicodestrings (2 Byte pro Zeichen / UTF-16).
Die Aktionen damit sind definitiv langsamer und wenn man einige Fehler macht erheblich langsamer
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.068 Beiträge
 
Delphi 12 Athens
 
#6

AW: Altes Programm mit DP12 kompilert wird sehr langsam

  Alt 2. Jun 2024, 19:40
Delphi-Strings sind seit D2009 Unicodestrings (2 Byte pro Zeichen / UTF-16).
Die Aktionen damit sind definitiv langsamer und wenn man einige Fehler macht erheblich langsamer
Über die Jahre wurden so einige Funktionen optimiert.
Vor allem seit FastMM und als große Teile des FastStrings-Projekt ins Delphi übernommen wurden, gab es große Sprünge, in Richtung schnell.

Abgesehn von den 2 Byte, sind aber die Behandlungen von AnsiString und UnicodeString prinzipiell gleich und sind nicht wirklich ein Tempoproblem.
Zu Beginn des Unicode waren aber auch noch die StringCheckings extrem bremsend, aber die wurden schnell wieder entfernt.
Und jetzt eben neu die aktiven Bereichs- und Indexprüfungen, wobei LongStrings (Ansi und Unicode) quasi prinzipiell sowas wie aufgemotzte dynamische Arrays sind.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 2. Jun 2024 um 19:48 Uhr)
  Mit Zitat antworten Zitat
Janek.d

Registriert seit: 6. Feb 2022
2 Beiträge
 
#7

AW: Altes Programm mit DP12 kompilert wird sehr langsam

  Alt 2. Jun 2024, 20:01
Daten von der Schnittstelle werden mit 'ReadFile...' in eine statische Byte-Tabelle geladen und verarbeitet. Grundsätzlich in der Berechnungsroutinen werden statische Strukturen verwendet. Die Sache von Ascii/Unicode waren an andere Stelle anzupassen, die kritische Berechnung wurde praktisch nicht geändert, trotzdem mit der DP12 Kompilat läuft es wie auf einem alten i386...
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.585 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Altes Programm mit DP12 kompilert wird sehr langsam

  Alt 2. Jun 2024, 20:36
die kritische Berechnung wurde praktisch nicht geändert, trotzdem mit der DP12 Kompilat läuft es wie auf einem alten i386...
Ist denn die Berechnung nach dem Lesen von der Schnittstelle langsam oder das Lesen selbst? Ich tippe eher darauf, dass der Datenfluss aus irgendeinem Grund gestört ist, sprich die Daten nicht reibungslos gelesen und verarbeitet werden. Denn alles andere sollte keinen derart großen Unterschied machen wie es bei dir klingt.

Aber wie gesagt:
Du müsstest schon Teile des Codes zeigen, damit jemand konkret etwas dazu sagen kann. Und du solltest erst einmal messen, wie schnell die Daten gelesen werden und wie lange es dann braucht, bis diese bei der Berechnung ankommen usw., denn Angaben wie "läuft es wie auf einem alten i386" sind sehr subjektiv.

Wird z.B. mit Threads gearbeitet und wenn ja, wie werden diese synchronisiert?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz