.NET StringBuilder跟String的區(qū)別
String數(shù)據(jù)類型代表的是一種不可變的字符串, 以為著對(duì)這個(gè)字符串的插入, 刪除或是更改,唯一的方式就是建立一個(gè)新的字符串,會(huì)引發(fā)對(duì)內(nèi)存的配置操作以及對(duì)內(nèi)存的反配置操作,加重CLR管理內(nèi)存和內(nèi)存回收的工作,這中情形尤其是在操作大字符串時(shí),更為明顯,在單一的用戶環(huán)境中,不會(huì)帶來(lái)任何問(wèn)題,但是在服務(wù)器環(huán)境中,在效能和可擴(kuò)展性上會(huì)造成比較嚴(yán)重的問(wèn)題。
與System.String相比,StringBuilder會(huì)保留自己的字符串緩沖區(qū),在針對(duì)StringBuilder執(zhí)行字符串操作時(shí),會(huì)先檢查緩沖區(qū)的大小是否能否容納新的字符串,不夠時(shí)再去增加需要的內(nèi)存數(shù)量,因此大幅降低內(nèi)存配置的操作次數(shù),提高了效能,當(dāng)然大多數(shù)的情況下,多估算一些緩沖區(qū)空間比后來(lái)又不斷加大要好。
文章轉(zhuǎn)載地址:武漢北大青鳥
posted on 2009-06-14 16:00 武漢北大青鳥 閱讀(230) 評(píng)論(0) 編輯 收藏