Méthode de recherche la plus rapide dans StringBuilder
J'ai un StringBuilder
nommé stb_Swap_Tabu
utilisé pour stocker des Cours de Noms,
Je suis l'aide de la méthode suivante pour trouver un cours:
stb_Swap_Tabu.ToString.Contains("CourseName")
dans mon cas, la Performance est la question la plus importante.
Est-il un moyen plus rapide?
source d'informationauteur Alaa | 2012-09-04
Vous devez vous connecter pour publier un commentaire.
StringBuilder n'était pas vraiment destiné pour toutes les chaînes de caractères fins. Si vous avez vraiment besoin d'une recherche, vous devez écrire votre propre méthode.
Il y a plusieurs cordes-algorithmes de recherche adaptés aux différents cas.
Ce qui suit est une simple mise en œuvre de la Knuth–Morris–Pratt algorithme qui se soucie uniquement de ordinale correspond à (aucun cas de pliage, non liées à la culture de classement, juste une plaine codepoint à codepoint match). Il a quelques
Θ(m)
généraux oùm
est la longueur du mot recherché, et se retrouve alors dansΘ(n)
oùn
est la distance pour le mot recherché ou de la longueur de l'ensemble de la chaîne-constructeur, si elle n'est pas là. Cela dépasse le simple char par char comparer ce qui estΘ((n-m+1) m)
(OùO()
notation décrit haut-limites,Θ()
décrit à la fois les limites supérieures et inférieures).Tout cela dit, il ne sembler comme la création d'une liste peut être une meilleure approche de la tâche à accomplir.
Je sais que c'est une vieille question, mais il est venu dans mes résultats de recherche lorsque j'essaie de créer une solution pour mon propre projet où je pensais que j'avais besoin de rechercher un stringbuilder mais ensuite j'ai réalisé que je pouvais tout simplement rechercher la valeur que j'ai utilisé pour initialiser le générateur de chaîne. Donc, ma situation ne peut pas être la même que la vôtre, mais j'ai pensé que je vous ferais partager: