Heim > Artikel > Backend-Entwicklung > C#-String-Operationen – reduzieren den Druck der Garbage Collection
Details zur C#-Leistungsoptimierung
1. Verwenden Sie string.Empty, um einer leeren Zeichenfolgenvariablen einen Anfangswert zuzuweisen
String.Empty ist eine Referenz und „“ ist die spezifische Implementierung
string filter=“”;//不建议 string filter=string.Empty; //建议
2. Verwenden Sie str.Length == 0, um leere Zeichenfolgen zu vergleichen
Die schnellste Methode: if (str .Length == 0)
Zweitens: if (str == String.Empty) oder if (str == "")
3. Vermeiden Sie unnötige String-ToUpper- und ToLower-Operationen
//不推荐的写法 if(s1.ToUpper()==s2.ToUpper()) …; //推荐的写法 if(String.Compare( s1, s2, true ) == 0) …;
4. Verwenden Sie StringBuilder geschickt, um String-Spleißoperationen durchzuführen
Wenn Sie einen längeren String konstruieren möchten, Insbesondere wenn mehr als zehnmal gespleißt wird (Erfahrungswert), sollten Sie StringBuilder für String-Spleißvorgänge verwenden.
[object Object]
5. Beim Erstellen eines StringBuilders sollte die Anfangsgröße angegeben werden
Die standardmäßige Anfangsgröße beträgt 16. Sobald diese überschritten wird, muss die Größe geändert und der GC-Druck erhöht werden. Es empfiehlt sich, ihm eine Ausgangsgröße zu geben, die auf Erfahrungswerten basiert.
StringBuilder sb = new StringBuilder(); for (int i = 0; i < 10; i++) { sb.Append(i); } string s = sb.ToString(); //建议修改为 StringBuilder sb = new StringBuilder(256); for (int i = 0; i < 10; i++) { sb.Append(i); } string s = sb.ToString();
6. Vermeiden Sie den Missbrauch von StringBuilder
String-Verkettungsoperationen wie str1+str2+str3+str4 werden in String.Concat(str1, str2, str3, str4) kompiliert, was effizienter als StringBuilder ist. String.Concat ermittelt die Zeichenfolgenlänge auf einmal, und StringBuilder muss eine Größenänderung durchführen, die zum mehrmaligen Generieren von Zeichenfolgenobjekten geeignet ist.
7. StringBuilder durch direktes Setzen von .Length=0
initialisierenDen experimentellen Ergebnissen zufolge ist die Initialisierung bei mehrmaliger Verwendung desselben StringBuilder-Objekts am schnellsten, wenn .Length=0 direkt festgelegt wird.
StringBuiler sb = new StringBuilder(256); ...... sb.Remove(0, sb.Length); //不建议 sb.Length = 0; //建议
8. Verwenden Sie .Length=0 nicht, um den von StringBuilder belegten Speicher freizugeben
static void test() { StringBuilder sb = new StringBuilder(256); for (int i = 0; i < 100; i++) { sb.Append(i); } string t = sb.ToString(); ……//其他不使用变量sb的代码段 sb.Length = 0; //去掉该句手工清空sb代码,会更早释放内存 }
Fortsetzung folgt
Das Obige ist der Inhalt der C#-String-Operation – Reduzierung des Drucks der Garbage Collection. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn). )!