« Kreativität ist alles!! | Main| Einfach zum Spaß ;-) »

s[0].ToString()=="v"

8
Kategorie  
Macht es wirklich einen Unterschied? Oder bin ich einfach zu pedantisch?

string s = "sdsddd";

Das erste Zeichen soll nun auf "v" geprüft werden.

Mir wäre folgende Implementation eingefallen -> s[0]='v'

Gefunden in einem Stück Code habe ich: s[0].ToString() == "v"
Mir gefällt es nicht (Bad Smell!)

Ist dies bei der heutigen Rechnerleistung einfach zu pedantisch, penibel und kleinkariert?
Oder sollte man auch bei genug Power im Rechner unnötige Konvertierungen vermeiden?

Gruß JJR

Kommentare

Gravatar Image1 - Hmm, es ist sogar nicht mal nur die Konvertierung:

erstens: ...=='v' erzeugt lediglich ein System.Char auf dem Stack (Value-Type) während ...=="v" ein System.String-Objekt (Reference-Type) auf dem Heap instantiiert inkl. dem obligatorischen Aufruf des Konstruktors und notwendiger Übergabe des Zeichens "v" als Argument

zweitens: die MSDN verrät, dass der Indexer von System.String schon ein char liefert, d.h. s[0] ergiebt ein System.Char und könnte direkt mit 'v' verglichen werden wobei der Vergleich mit "v" die Konvertierung zum String notwendig macht...

drittens: hintendran kommt bei der zweiten Variante zu allem Überfluss noch Arbeit für den GC weil das String-Objekt ja auch irgendwie wieder vom Heap entfernt werden muss

Alles in allem also doppelt dumm gelaufen bei der zweiten Variante, Konvertierung und Objekt-Instantiierung sind beide überflüssig. Das sieht man übrigens auch recht einfach daran, dass deren MSIL-Code ungefähr doppelt so lang ist obwohl es das gleiche macht Emoticon

Man könnte nun tatsächlich von Kleinkariertheit reden, aber in einer Schleife die jeden Tag ein Million mal läuft und Teil einer Software für einen geschäftskritischen Prozess mit mehr als 100 TSD Euro Umsatz am Tag ist kann das auch in Zeiten von billiger Rechentechnik ausschlaggebend sein... und wer wünscht sich schon eine Situation im Produktivbetrieb bei der innerhalb von 15 Minuten mit wütendem Auftraggeber im Rücken die dadurch hervorgerufene OutOfMemoryException schnell gefixt werden muss weil man ansonsten mächtig was auf die Löffel bekommt Emoticon

So, nun aber genug gewettert - bevor noch jemand ein Code-Stückchen aus der Vergangenheit findet wo ich auch hart ein Zeichen einer Zeichenkette gegen einenen String der Länge 1 vergleiche Emoticon

Gravatar Image2 - Hallo Sebastian,

das hört sich ja so an, als würdet Ihr Exceptions zählen Emoticon

Gruß JJR
Emoticon

Mach einen Kommentar

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)

Amazon


Impressum

Firmenname: Peanuts-Soft
Straße Nummer: Biinger Strasse 8
PLZ Ort: 55263 Wackernheim
Telefon: +491772134526
E-Mail: joerg.reck @ peanuts-soft.de
Disclaimer: Peanuts-Soft übernimmt keine Garantie dafür, dass die auf dieser Website bereitgestellten Informationen vollständig, richtig und stets aktuell sind. Dies gilt auch für alle Links, auf die verwiesen wird. Peanuts-Soft ist für die Inhalte, auf die per Link verwiesen wird, nicht verantwortlich. Peanuts-Soft haftet nicht für konkrete, mittelbare und unmittelbare Schäden oder Schäden, die durch fehlende Nutzungsmöglichkeiten, Datenverluste oder entgangene Gewinne – sei es aufgrund der Nichteinhaltung vertraglicher Verpflichtungen, durch Fahrlässigkeit oder eine andere unerlaubte Handlung – im Zusammenhang mit der Nutzung von Dokumenten oder Informationen bzw. der Erbringung von Dienstleistungen entstehen, die auf dieser Web Site zugänglich sind.
Datenschutz: Inhalt und Gestaltung der Internetseiten sind urheberrechtlich geschützt. Eine Vervielfältigung der Seiten oder deren Inhalte bedarf der vorherigen schriftlichen Zustimmung von Peanuts-Soft.


Locations of visitors to this page

Powered By

Domino BlogSphere
Version 3.0.2