Ersetzen mehrere Zeichen in einem string, der Schnellste Weg?

Bin ich importieren einige Anzahl der Datensätze mit mehreren string Felder aus einer alten db in eine neue db. Es scheint zu sein, sehr langsam, und ich vermute, es ist, weil ich dies tun:

foreach (var oldObj in oldDB)
{
    NewObject newObj = new NewObject();
    newObj.Name = oldObj.Name.Trim().Replace('^', 'Č').Replace('@', 'Ž').Replace('[', 'Š')
        .Replace(']', 'Ć').Replace('`', 'ž').Replace('}', 'ć')
        .Replace('~', 'č').Replace('{', 'š').Replace('\\', 'Đ');
    newObj.Surname = oldObj.Surname.Trim().Replace('^', 'Č').Replace('@', 'Ž').Replace('[', 'Š')
        .Replace(']', 'Ć').Replace('`', 'ž').Replace('}', 'ć')
        .Replace('~', 'č').Replace('{', 'š').Replace('\\', 'Đ');
    newObj.Address = oldObj.Address.Trim().Replace('^', 'Č').Replace('@', 'Ž').Replace('[', 'Š')
        .Replace(']', 'Ć').Replace('`', 'ž').Replace('}', 'ć')
        .Replace('~', 'č').Replace('{', 'š').Replace('\\', 'Đ');
    newObj.Note = oldObj.Note.Trim().Replace('^', 'Č').Replace('@', 'Ž').Replace('[', 'Š')
        .Replace(']', 'Ć').Replace('`', 'ž').Replace('}', 'ć')
        .Replace('~', 'č').Replace('{', 'š').Replace('\\', 'Đ');
    /*
    ... some processing ...
    */
}

Nun, ich habe einige Beiträge und Artikel über das Netz, wo ich gesehen habe viele verschiedene Gedanken darüber. Einige sagen, es ist besser, wenn ich das machen würde, regex mit MatchEvaluator, einige sagen, es ist das beste zu lassen, wie es ist.

Während es ist möglich, dass es wäre leichter für mich einfach ein benchmark-Fall für mich, habe ich beschlossen, eine Frage zu stellen hier den Fall, dass jemand anderes hat, sich zu Fragen die gleiche Frage, oder falls jemand weiß im Voraus.

Also, was ist der Schnellste Weg, dies zu tun in C#?

BEARBEITEN

Habe ich geschrieben die benchmark hier. Auf den ersten Blick sieht es aus wie Richard der Weg mag der Schnellste. Doch sein Weg, noch Marc, der alles tun würde, wegen der falschen Regex-Muster. Nach der Korrektur der Muster von

@"\^@\[\]`\}~\{\\" 

zu

@"\^|@|\[|\]|`|\}|~|\{|\\" 

scheint es, als ob der alte Weg mit angekettet .Replace () - Aufrufe ist die Schnellste, nachdem alle

Ich würde vorschlagen zu lassen, wie es ist. Vielleicht versuchen Sie, eine parallel foreach ?
Sie Verdacht ist das der Grund? Sollten Sie sich wissen. Sie müssen ein Profil der Anwendung, um die Ordnung der Engpass - nicht erraten.
Ich fragte einmal this und angenommen, dieser, aber ich bin mir nicht sicher, ob das, was Sie suchen.
ob ich Ahnen oder wissen ist nicht hier eine Frage, die Frage ist, wie Sie bringen bessere Leistung, während das ersetzen mehrerer Zeichen in einem string. Es ist nicht relevant, Sie sollten davon ausgehen, dass die /* ... some processing ... */ Teil der Beispiel-code ist sicherlich nicht der Flaschenhals bedenkt, dass ich die Frage in dieser form. Vielen Dank für den konstruktiven Kommentar obwohl.
Mein Punkt ist, dass, wenn Sie don ' T haben die Daten, die Sie möglicherweise tun einige Mikro-Optimierungen, wo es eine chance von makro-Optimierungen. Ahnend, dass ein Stück code, das problem ist, bedeutet nicht, es ist - vielleicht sind Sie konzentrieren Ihre Bemühungen auf die falsch ein problem, das ist alles.

InformationsquelleAutor Dejan Janjušević | 2012-08-10

Schreibe einen Kommentar