2 Stimmen

c# String Leistung - was ist schneller zu vergleichen, String Text oder String Länge

Ich muss eine riesige Xml-Datei lesen, die aus über 3 Millionen Datensätzen und über 10 Millionen verschachtelten Elementen besteht.

Natürlich verwende ich xmltextreader und habe meine Parsing-Zeit von früher 90 Sekunden auf etwa 40 Sekunden reduziert, indem ich mehrere Optimierungstricks und -tipps angewendet habe.

Ich möchte jedoch die Bearbeitungszeit so weit wie möglich reduzieren, daher die folgende Frage.

Viele Elemente sind vom Typ xs:boolean, und der Datenlieferant stellt die Werte immer als "wahr" oder "falsch" dar - nie als "1" oder "0".

Für solche Fälle war mein frühester Code:

if (xmlTextReader.Value == "true")
{
    bool subtitled = true;
}

die ich weiter optimiert habe:

if (string.Equals(xmlTextReader.Value, "true", StringComparison.OrdinalIgnoreCase))
{
    bool subtitled = true;
}

Ich wollte wissen, ob unten am schnellsten wäre (weil es entweder "wahr" oder "falsch" ist)?

if (xtr.value.length == 4)
{
    bool subtitled = true;
}

0voto

tia Punkte 9085

Wenn Sie wissen, dass es entweder "wahr" oder "falsch" ist, muss das letzte Snippet am schnellsten sein.

Sie können aber auch schreiben:

bool subtitled = (xtr.Value.length == 4);

Das dürfte noch schneller gehen.

0voto

MikeJ Punkte 1144

Ich weiß, dass die Frage alt ist, aber die akzeptierte Antwort ist falsch, oder zumindest falsch in ihrer Erklärung.

Der Vergleich der Längen vielleicht das geringste bisschen schneller, aber nur, weil string.Equals ist wahrscheinlich tun einige andere Vergleiche, bevor es auch überprüft die Längen und entscheidet, dass sie nicht gleich sind Zeichenfolgen.

In der Praxis ist dies also eine Optimierung der letzten Instanz.

Hier finden Sie die Quelle für den .NET Core Stringvergleich.

-1voto

Dmitry Karpezo Punkte 1054

String-Vergleich und Parsing ist sehr langsam in .Net, ich würde empfehlen, vermeiden Sie intensive mit String-Parsing/Vergleich in .Net.

Wenn Sie dazu gezwungen sind, verwenden Sie hoch optimierten, nicht verwalteten oder unsicheren Code und nutzen Sie Parallelität.

IMHO.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X