(C#) 動態處理字串 String V.S. StringBuilder 效能

本篇同步發佈在 Medium 平台上 Medium 連結

首先,String 與 StringBuilder 是不同的喔!

String

  1. 命名空間:System

  2. 代表不變的字串,一旦設定好值,就不能更改它。

  3. String 是字元的陣列,一個連續的記憶體,當要新增、修改、刪除、變動 String 時,就必須毀掉這個陣列重新建立一個字串,因此很耗效能

String 類別 (System) MicroSoft 文件連結

StringBuilder

  1. 命名空間:System.Text

  2. 表示可變動的字元字串,此類別無法被繼承。

  3. 使用時機:預期對字串進行大量變更時、預計在迴圈內串連字串時。

  4. 不是 string,所以需要使用 .ToString() 轉成 String 型態。

在 .NET 中使用 StringBuilder 類別 MicroSoft 文件連結

實際測試

1. 動態字串 Loop 10 次

可以看到兩者花費時間是差不多的,StringBuilder 快 String 一倍。

2. 動態字串 Loop 100000 次

此時 StringBuilder 已經比 String 快上 1000 多倍了!

3. 靜態字串

在靜態字串時,String 比 StringBuild 效能來的好!

結論:當您要動態處理字串時最好選用 StringBuilder 類別 ,靜態處理字串則選用 String 類別。

comments powered by Disqus