Das Vergleichen von Strings ist möglicherweise nicht etwas, an das Sie bei der Optimierung von Software denken. Typischerweise umfasst die Optimierung Aufgaben wie das Aufteilen von Schleifen auf Goroutinen, das Finden eines schnelleren Hashing-Algorithmus oder etwas, das wissenschaftlicher klingt. Es gibt ein Erfolgserlebnis, das wir bekommen, wenn wir solche Veränderungen vornehmen. Der Stringvergleich kann jedoch oft der größte Engpass in einer Pipeline sein. Zum Beispiel wird der folgende Ausschnitt oft verwendet, aber es ist die schlechteste Lösung (Benchmarks unten) und hat echte Probleme verursacht.

strings.ToLower(name) == strings.ToLower(anderername)
Dies scheint ziemlich einfach zu sein. Wandeln Sie jede Zeichenfolge in Kleinbuchstaben um und vergleichen Sie dann. Um zu verstehen, warum dies eine schlechte Lösung ist, müssen Sie wissen, was ein String darstellt und wie `ToLower` funktioniert.

Lassen Sie uns jedoch zunächst über die wichtigsten Anwendungsfälle für Zeichenfolgenvergleiche sprechen. Beim Vergleich mit dem normalen `==`-Operator erhalten wir die schnellste und optimierteste Lösung. APIs und ähnliche Software berücksichtigen jedoch in der Regel die Groß-/Kleinschreibung. Dies ist, wenn wir `ToLower` einlegen und es Feature-Complete nennen.

In Go ist eine Zeichenfolge eine unveränderliche Abfolge von Runen. Rune ist ein Begriff, den Go verwendet, um einen Codepunkt darzustellen. Weitere Informationen zu Strings, Bytes, Runen und Zeichen finden Sie im Go-Blog. `ToLower` ist eine Standardbibliotheksfunktion, die jede Rune in einem String durchläuft, in Kleinbuchstaben umwandelt und den neu gebildeten String zurückgibt. Der obige Code durchläuft also jede Zeichenfolge vollständig vor dem Vergleich. Es ist eng an die Länge der Saiten gebunden. Hier ist ein Pseudocode, der grob die Komplexität des obigen Snippets darstellt.

Leave a Reply

Your email address will not be published. Required fields are marked *

Explore More

So verhindern Sie ein Umfangskriechen beim Verwalten eines Projekts von zu Hause aus

March 1, 2021 0 Comments 0 tags

Wenn Sie ein Projekt leiten, erwarten Sie von Ihrem Team, dass es Ihre Benutzeranforderungen erfüllt und erfüllt. Im Gegenzug streben Sie immer danach, mit Klarheit und Empathie gegenüber Ihren Teammitgliedern

Lassen Sie uns verbessern: Verwenden Sie Intel AI, um die Bildauflösung in dieser Demo zu erhöhen

January 12, 2021 0 Comments 0 tags

Seit Jahrzehnten träumt Science-Fiction von einer Welt, in der die Technik das Unverständliche sichtbar machen kann. In außerirdischen Epen und prozeduralen Kriminaldramen haben Detektive und Wahrheitssucher das Mantra wiederholt: Zoomen