AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StrToInt langsam in D 10.4

Ein Thema von BavDev · begonnen am 25. Jun 2021 · letzter Beitrag vom 29. Jun 2021
Antwort Antwort
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.075 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: StrToInt langsam in D 10.4

  Alt 25. Jun 2021, 11:04
Gute Idee, bitte mal auf ausgeblendete EConvertError prüfen.

Geändert von TiGü (25. Jun 2021 um 11:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DXler
DXler

Registriert seit: 5. Nov 2003
53 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: StrToInt langsam in D 10.4

  Alt 25. Jun 2021, 14:54
Hallo zusammen.

Ich habe bis vor ein paar Monaten auch Zahlen, die in einer String-Variable stehen, mit "StrToInt" umgewandelt bis ich irgendwann mal auf die Idee kam einfach hinter dem Variablennamen (z. B. "test") mal einen "." zu setzen um zu gucken ob und vorallem was passiert...

Mir wurde daraufhin eine Liste mit etlichen Funktionen angezeigt. Unter anderem auch "ToString" und "ToInteger".

Seitdem spare ich mir "IntToStr" und "StrToInt" (Delphi 10.1) und setze einfach hinter den Variablennamen die entsprechende Funktion.


Ob das allen hier im Forum bekannt ist weiß ich nicht, aber vielleicht hilft es ja dem einen oder anderen weiter...


Welche Prozeduren oder Funktionen genau hinter den "To..."-Funktionen stecken weiß ich nicht und auch nicht ob sie einen optimierten Code erzeugen.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.487 Beiträge
 
Delphi 12 Athens
 
#3

AW: StrToInt langsam in D 10.4

  Alt 25. Jun 2021, 15:28
Ich bezweifle das StrToInt so langsam sein kann, das der Import von 5000 Datensätzen plötzlich 78 Sekunden längert dauert.
Wie oft rufst du den StrToInt pro Datensatz auf?

Wenn StrToIntDef schneller geht, liegt das wahrscheinlich an deiner Exception-Behandlung im Import.
Die wird jedesmal aufgerufen, wenn StrToInt ein ungültiger Wert übergeben wird.

Ansonsten schreib ein kleines Testprogramm das wir mit unterschiedlichen Compilern übersetzen können.
Nichts aufwendiges, nur eine Schleife die IntToStr ein par Millionen mal aufruft und die Gesamtzeit ausgibt.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: StrToInt langsam in D 10.4

  Alt 25. Jun 2021, 17:51
Hallo,
ist der Import nur in der IDE so langsam,
oder auch, wenn du das Programm direkt startest.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: StrToInt langsam in D 10.4

  Alt 25. Jun 2021, 18:20
Unmöglich - StrToInt zieht ca 10mio strings in 100ms durch auf nem 3.2GHz i7
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
BavDev

Registriert seit: 21. Nov 2014
14 Beiträge
 
Delphi 12 Athens
 
#6

AW: StrToInt langsam in D 10.4

  Alt 25. Jun 2021, 19:57
Hallo an alle,

jawohl, ich konnte das ganz eindeutig feststellen. Mein Import liest eine CSV-Zeile, parst die in einzelne Strings und (in dem Fall) 4 davon sind integers und werden mit StrToInt umgewandelt. Ich habe den Import so abgekürzt, dass nur die Zeilen gelesen werden, geparst und StrToInted. Keine weitere Verarbeitung. Dabei festgestellt, dass die nachgelagerte Datenbank-Verarbeitung die Import-Laufzeit nur unwesentlich beeinflusst. Statt 3 Sekunden dann 3.4 Sekunden. Wenn ich die 4 StrToInts weglasse, dann habe ich die gewohnte Performance. Wenn ich die StrToInts durch StrToIntDef ersetze, dann auch. Nur mit 20000x StrToInt verlängert sich der genannte Import definitiv von 3 Sekunden auf 1:21 Minuten.
Mittlerweile habe ich noch was herausgefunden. Den Unterschied gibt es nur, wenn ich das Programm im Debug-Modus laufen habe! Ohne Debug -> StrToInt ist gewohnt schnell! Nun habe ich den Debugger aber immer laufen beim Programmieren...

Somit ändert sich meine Frage dahingehend:
Wieso ist das im Debug-Modus so? Zwar nicht mehr so wichtig, weil das Kunden-Endprodukt läuft ja so schnell wie gewohnt. Aber dennoch für mein Verständnis wichtig. (Und es irritiert mich zwischendurch, wenn ich das mit der alten Version von XE5 vergleiche.) Angeblich ist StrToIntDef ja der gleiche Code? Wieso ist der dann soviel schneller?
Exceptions spielen übrigens keine Rolle, soweit ich das von verschiedenen Imports mit verschiedenen Daten beurteilen kann. Manchmal steht einfach nichts im Feld, dann gibts Exception, wo ich je nach Kontext auf 0 oder -1 setze.
  Mit Zitat antworten Zitat
Sailor

Registriert seit: 20. Jul 2008
Ort: Balaton
112 Beiträge
 
Delphi 2010 Professional
 
#7

AW: StrToInt langsam in D 10.4

  Alt 25. Jun 2021, 21:45
Du hast irgendwo in der Umgebung einen Breakpoint gesetzt. Lösche mal alle und versuch‘s noch mal.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: StrToInt langsam in D 10.4

  Alt 26. Jun 2021, 07:42
Hallo,
was passiert, wenn du das Programm im Debugmodus ohne IDE startest?
Heiko
  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 06:29 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