2016-06-02 8 views
-2

Ich gebe eine Zeichenfolge aus einer API mit einer Länge von 45 Zeichen zurück. Es gibt ein Wort, das für eine Bedingung eindeutig ist, die in der anderen Bedingung nicht angezeigt wird.string.contains() vs string.equals() oder string == Leistung

Ich frage mich, ob die Verwendung von string.contains() ist leistungsfähiger als der Vergleich der gesamten Zeichenfolge mit string.equals() oder string == "blah blah".

Ich kenne nicht die innere Funktionsweise dieser Methoden, aber logisch scheint es, dass contains() schneller sein sollte, weil es aufhören kann, die Zeichenfolge zu durchlaufen, nachdem es die Übereinstimmung gefunden hat. Ist das genau? Übrigens ist das Wort, das ich überprüfen möchte, das erste Wort in der Zeichenfolge.

+7

'Contains' und' Equals' sind nicht äquivalent und nicht austauschbar. –

+4

"das Wort, das ich überprüfen möchte, ist das erste Wort in der Zeichenfolge" - klingt wie du willst 'StartsWith' dann, oder? –

+2

Haben Sie tatsächlich ein Leistungsproblem? Ich frage, weil das fast immer über Optimierung ist. Wenn man bedenkt, dass es sich um einen API-Aufruf handelt, würde es mich nicht einmal interessieren, welches * am leistungsfähigsten * ist. (Aber ich würde mich interessieren, was funktionell korrekt ist) –

Antwort

2

Ich stimme D Stanley (Kommentar). Sie sollten verwenden String.StartsWith()

Das heißt, ich weiß auch nicht die innere Funktionsweise jeder Methode, aber ich kann Ihre Logik sehen. "String.Contains()" kann jedoch weiterhin die gesamte Zeichenfolge laden, bevor sie verarbeitet wird. In diesem Fall wäre der Leistungsunterschied sehr gering.

Als letzter Punkt, mit einer String-Länge von nur 45 Zeichen, sollte der Leistungsunterschied mich extrem klein sein. Ich war schockiert, als ich eine Junky-Methode schrieb, um Zeichen zu ersetzen, und fand heraus, dass in einem Bruchteil eines Augenzwinkerns ~ 10kB Text verarbeitet werden. Also, es sei denn, Sie tun etwas verrücktes Handling in Ihrer App, es sollte nicht viel ausmachen.

+0

Ich werde mit startswith() gehen. Danke Kyle. –

+0

Kein Problem. Aber Kredit @D Stanley für diesen Punkt. :) –

+0

yup, ich habe seinen Kommentar upvoted :) –