Maison >développement back-end >Tutoriel C#.Net >Opérations de chaîne C# – réduit la pression du garbage collection
Détails de l'optimisation des performances C#
1 Utilisez string.Empty pour attribuer une valeur initiale à une variable de chaîne vide
.
String.Empty est une référence, et "" est l'implémentation spécifique
string filter=“”;//不建议 string filter=string.Empty; //建议
2. Utilisez str.Length == 0 pour comparer les chaînes vides
La méthode la plus rapide : if (str .Length == 0)
Deuxième : if (str == String.Empty) ou if (str == "")
3. Évitez les opérations ToUpper et ToLower inutiles
Des méthodes telles que ToUpper et ToLower régénéreront les paires de chaînes
String.Compare peut ignorer la casse des chaînes
//不推荐的写法 if(s1.ToUpper()==s2.ToUpper()) …; //推荐的写法 if(String.Compare( s1, s2, true ) == 0) …;
4. Utilisez StringBuilder habilement pour effectuer des opérations d'épissage de chaînes
Si vous souhaitez construire une chaîne plus longue, en particulier lors d'épissages plus de 10 fois (valeur d'expérience), vous devez utiliser StringBuilder pour les opérations d'épissage de chaînes.
[object Object]
5. Lors de la création d'un StringBuilder, la taille initiale doit être spécifiée
La taille initiale par défaut est de 16. Une fois dépassée, il faudra la redimensionner et augmenter la pression du GC. Il est recommandé de lui donner une taille initiale basée sur des valeurs empiriques.
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. Évitez d'abuser de StringBuilder
Les opérations de concaténation de chaînes similaires à str1 str2 str3 str4 seront compilées dans String.Concat(str1, str2, str3, str4), qui est plus efficace que StringBuilder. String.Concat déterminera la longueur de la chaîne en une seule fois et StringBuilder doit effectuer Resize, ce qui convient pour générer plusieurs fois des objets chaîne.
7. Initialisez StringBuilder en définissant directement .Length=0
Selon les résultats expérimentaux, lorsque vous utilisez plusieurs fois le même objet StringBuilder, l'initialisation est la plus rapide en définissant directement .Length=0.
StringBuiler sb = new StringBuilder(256); ...... sb.Remove(0, sb.Length); //不建议 sb.Length = 0; //建议
8. N'utilisez pas .Length=0 pour libérer la mémoire occupée par StringBuilder
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代码,会更早释放内存 }
À suivre
Ce qui précède est le contenu de l'opération de chaîne C# - réduisant la pression du garbage collection. Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois (www.php.cn). )!