AGB  ·  Datenschutz  ·  Impressum  







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

Stringfunktionen

Ein Thema von relocate · begonnen am 24. Apr 2012 · letzter Beitrag vom 25. Apr 2012
Antwort Antwort
Seite 1 von 2  1 2      
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#1

AW: Stringfunktionen

  Alt 24. Apr 2012, 11:36
Na gut, was zum anfixen:

http://www.koders.com/delphi/fidFB38...FDF60E6C7.aspx

Eigentlich von www.droopyeyes.com, aber die sind gerade off.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Stringfunktionen

  Alt 24. Apr 2012, 11:54
@Iwo Asnet

Ein Hinweis für unerfahrene 2009+ Anwender, sollte noch gegeben werden
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
relocate

Registriert seit: 26. Mai 2009
60 Beiträge
 
#3

AW: Stringfunktionen

  Alt 24. Apr 2012, 12:23
@Iwo Asnet

Ein Hinweis für unerfahrene 2009+ Anwender, sollte noch gegeben werden
Dann mal her mit dem Hinweis, auch wenn ich kein unerfahrener und kein Anwender von 2009+ bin.
  Mit Zitat antworten Zitat
relocate

Registriert seit: 26. Mai 2009
60 Beiträge
 
#4

AW: Stringfunktionen

  Alt 24. Apr 2012, 12:12
Na gut, was zum anfixen:

http://www.koders.com/delphi/fidFB38...FDF60E6C7.aspx

Eigentlich von www.droopyeyes.com, aber die sind gerade off.
Mehr als zum anfixen ist es wohl nicht, wenn die Droopyeyes down sind, aber das hier im Kopf der Unit steht:

//No copying, alteration, or use is permitted without
//prior permission from myself.

Dann darf man das wohl kaum verwenden.
  Mit Zitat antworten Zitat
UliBru

Registriert seit: 10. Mai 2010
155 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Stringfunktionen

  Alt 24. Apr 2012, 12:23
JCLStrings ?
Eigene Beiträge sind vermutlich ab einer bestimmten Qualität sicher machbar. Siehe auch hier
Er wollte so richtig in Delphi einsteigen. Nun steckt er ganz tief drin ...
  Mit Zitat antworten Zitat
relocate

Registriert seit: 26. Mai 2009
60 Beiträge
 
#6

AW: Stringfunktionen

  Alt 24. Apr 2012, 12:28
JCLStrings ?
Eigene Beiträge sind vermutlich ab einer bestimmten Qualität sicher machbar. Siehe auch hier
Tolle Unit, aber die Assemblerumsetzungen sind denn eher nicht zum lernen geeignet. Eine fertige Unit meinte ich eben nicht mit einer Sammlung, schon eine aus der man lernen kann. Und die JCL erschlägt einen sowieso.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Stringfunktionen

  Alt 24. Apr 2012, 13:26
Zitat:
1. Wird meine Variante nicht unbedingt die schnellste sein, da ich kein Profi Entwickler bin
2. Gibt es mit Sicherheit schon mehrere Implementationen, auch wenn die vielleicht erst auf der Googlesuchseite 10 steht.
3. Weiß ich dann immer noch nicht, welche die Schnellste ist.
Wobei es ja auch nicht immer um Schnelligkeit geht.

Denn es kommt auf den Einsatzzweck drauf an.
- wird es sehr oft aufgerufen, dann könnte es schon wichtig sein
- ist die zeit egal, dann ist auch die Geschwindigkeit egal (bzw. es muß nicht unbedingt das Allerschnellste sein)
- und manchmal reicht es, wenn es ausreichend flott ist, aber man dafür wartbaren code bekommt, welchen man eventuell auch noch selber versteht.

Ansonsten kannst du ja immernoch nachmessen, bzw. etwas nehmen, was dir vom Code her gefällt und sollte es doch noch geschwindigkeitsprobleme geben, dann könnte man immer noch nachsehn was schneller/optimaler ist.



Wie es schon erwähnt wurde:
Wenn es um einzelne Funktionen geht, dann bieten die Forensuche, die CL, sowie Google und die anderen Delphi-Webseiten sehr viel.
Und notfalls fragt man eben hier geziehlt nach.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (24. Apr 2012 um 13:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#8

AW: Stringfunktionen

  Alt 24. Apr 2012, 13:36
Zunächst muss eine Routine zuverlässig funktionieren, danach kann man dann sehen, wie man die Geschwindigkeit ggf. erhöhen könnte. Dreht man diese Reihenfolge um, kommt selten etwas Brauchbares dabei heraus.
Zitat von Donald Knuth:
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
relocate

Registriert seit: 26. Mai 2009
60 Beiträge
 
#9

AW: Stringfunktionen

  Alt 24. Apr 2012, 14:03
Zunächst muss eine Routine zuverlässig funktionieren, danach kann man dann sehen, wie man die Geschwindigkeit ggf. erhöhen könnte. Dreht man diese Reihenfolge um, kommt selten etwas Brauchbares dabei heraus.
Klar, Zuverlässigkeit steht an erster Stelle, leider leidet die Effizienz immer mehr, die neue Hardware bügelt das ja schon aus.

Ich habe mal ein Char aus einem String herausgelöst. Was bei einem Leerstring eine Exception wirft, also muss das getestet werden. Ich habe das mit folgenden Varianten gemacht:

1)
Delphi-Quellcode:
if wort = 'then chrtest := #0
else chrtest := wort[1];
2)
Delphi-Quellcode:
if wort <> 'then chrtest := wort[1]
else chrtest := #0;
3)
Delphi-Quellcode:
if length(wort)=0 then chrtest := #0
else chrtest := wort[1];
4)
Delphi-Quellcode:
if length(wort)>0 then chrtest := wort[1]
else chrtest := #0;
5)
Delphi-Quellcode:
try
  chrTest := wort[1];
except
  chrTest := #0;
end;
Auf meinem PC war die Variante 2 die schnellste, wenn auch nur unwesentlich schneller als 1.
Variante 4 hat ungefähr doppelt solange gedauert, wiederum unwesentlich schneller als 3.
Der Try Block etwas langsamer noch als 3/4 (außer die Exception wurde geworfen, das hat gedauert).

Wenn der Fall eintrat dass der String leer war erhöhte sich die Abarbeitungszeit.

Auf einem anderen, älteren PC war das anders. Die Variante 1 und 2 wurden deutlich schneller bei einem Leerstring. Und die Varianten 3 und 4 etwas schneller. Also ist auch noch relevant wie man testet und welcher der Ziel PC ist. Der Try Block war auch da langsamer bei einer Exception.

Geändert von mkinzler (24. Apr 2012 um 14:04 Uhr) Grund: Delphi-Tags eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Stringfunktionen

  Alt 24. Apr 2012, 14:59
Zitat:
Delphi-Quellcode:
try
  chrTest := wort[1];
except
  chrTest := #0;
end;
Sowas sollte man auch niemals machen.
Denn fang jetzt mal an dein Programm zu debuggen, wenn da genügend solcher Code drin vorkommt,
dann kannst'e dich auch gleich erschießen, denn sowas macht absolut keinen Spaß mehr.

Im Fall von Zahlen ist das sehr gut beobachtbar:
Delphi-Quellcode:
try
  i := StrToInt(s);
except
  i := 0;
end;

// oder

i := StrToIntDef(s, 0);
Delphi-Quellcode:
try
  i := StrToInt(s);
  {mach was mit i}
except
end;

// oder

if TryStrToInt(s, i) then
  {mach was mit i}
Vorallem leere except-end-Blöcke sind grauenhaft.


Bezüglich der Unterschiede zwischen = und <>.
Dort hängt es sehr von den Eingangsdaten ab.
Da ist mir persönlich fast immer alles egal und ich verwende die Variante, welche ich besser lesen kann. Außerdem versuche ich durchgängig nur eine Variante zu verwenden, weil man den gesamten Code dadurch auch besser verstechen kann. (man verliest sich weniger)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:25 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