ホームページ >バックエンド開発 >C#.Net チュートリアル >C# 文字列操作 -- ガベージ コレクションの負荷を軽減します。
C# パフォーマンス最適化の詳細
1. string.Empty を使用して空の文字列変数に初期値を割り当てます
String.Empty は参照であり、「」は特定の実装です
string filter=“”;//不建议 string filter=string.Empty; //建议
2. 短い文字列を比較するには str.Length == 0 を使用します
最も速い方法: if (str.Length == 0)
第二に: if (str == String.Empty) または if (str == "")
3. 不要な文字列 ToUpper および ToLower 操作を回避します
//不推荐的写法 if(s1.ToUpper()==s2.ToUpper()) …; //推荐的写法 if(String.Compare( s1, s2, true ) == 0) …;
4. StringBuilderを上手に使って文字列の結合操作を実行します
より長い文字列を構築したい場合文字列、特に 10 回を超えるスプライス (経験値) を行う場合は、文字列のスプライシング操作に StringBuilder を使用する必要があります。
[object Object]
5. StringBuilder を作成するときは、初期サイズを指定する必要があります
デフォルトの初期サイズは 16 です。これを超えると、サイズ変更と GC 圧力の増加が必要になります。経験値に基づいて初期サイズを与えることをお勧めします。
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. StringBuilder の乱用を避けてください
str1+str2+str3+str4 のような文字列の結合操作は String.Concat(str1,str2,str3) にコンパイルされます。 、str4 )、効率は StringBuilder よりも高くなります。 String.Concat は文字列の長さを一度に決定し、StringBuilder は文字列オブジェクトを複数回生成するのに適した Resize を実行する必要があります。
7. .Length=0を直接設定してStringBuilderを初期化します
実験結果によれば、同じStringBuilderオブジェクトを複数回使用する場合は、.Length=を直接設定します0 を指定すると最速で初期化されます。
StringBuiler sb = new StringBuilder(256); ...... sb.Remove(0, sb.Length); //不建议 sb.Length = 0; //建议
8. StringBuilder によって占有されているメモリを解放するために .Length=0 を使用しないでください
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代码,会更早释放内存 }
9。
以上 C# の文字列操作です。ガベージ コレクションの負荷を軽減するコンテンツです。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。