String數據類型代表的是一種不可變的字符串, 以為著對這個字符串的插入, 刪除或是更改,唯一的方式就是建立一個新的字符串,會引發對內存的配置操作以及對內存的反配置操作,加重CLR管理內存和內存回收的工作,這中情形尤其是在操作大字符串時,更為明顯,在單一的用戶環境中,不會帶來任何問題,但是在服務器環境中,在效能和可擴展性上會造成比較嚴重的問題。
與System.String相比,StringBuilder會保留自己的字符串緩沖區,在針對StringBuilder執行字符串操作時,會先檢查緩沖區的大小是否能否容納新的字符串,不夠時再去增加需要的內存數量,因此大幅降低內存配置的操作次數,提高了效能,當然大多數的情況下,多估算一些緩沖區空間比后來又不斷加大要好。
文章轉載地址:武漢北大青鳥