在c#中,在處理字串拼接的時候,使用stringbuilder的效率會比硬拼接字串高很多。到底有多高,如下:
static void main(string args)
sw1.stop();
console.writeline("拼接字串所耗費時間為:" + sw1.elapsedmilliseconds + "毫秒");
stringbuilder str2 = new stringbuilder(10000);
stopwatch sw2 = new stopwatch();
sw2.start();
for (int i = 0; i < 10000; i++)
sw2.stop();
console.writeline("使用stringbuilder所耗費時間為:" + sw2.elapsedmilliseconds + "毫秒");
console.readkey();
}
為什麼?
string型別的特別之處在於我們可以像使用值型別那樣使用string型別,而實際上string是引用型別。既然是引用型別,clr就會把string型別儲存在託管堆上。當我們使用str1 = str1 + i.tostring();進行拼接,由於string型別的恆定性,不會改變str1在記憶體中的位址,而是在託管堆上建立了另外乙個字串物件。如此,拼接10000次,就建立了10000個string型別物件,效率難免低下。
而stringbuilder會在記憶體中開闢一塊連續的記憶體,當增加字串實際上是針對同一塊記憶體的修改,所以效率更高。
當然,到底使用硬拼接字串,還是使用stringbuilder,不是絕對的,要看情況。當拼接字串很少的情況下,當然直接硬拼接字串就行了。
多用用StringBuilder吧
如果要操作乙個不斷增長的字串,請你不要再用string類了。為什麼涕淌要這樣說呢?我們來看看兩個類的工作原理。string類是一種傳統的修改字串的方式,它確實可以完成把乙個字串新增到另乙個字串上的工作沒錯。但是在.框架下,這個操作實在是划不來。因為系統先是把兩個字串寫入記憶體,接著刪除原來的stri...
StringBuilder與String有哪些區別
在相同字串的許多操作上,使用stringbuilder類會比使用string類更有效率。對於少量的字串拼接的字元操作,使用string模擬較方便。string類和stringbuilder類都用來處理字串,它們之間有著較多相似的常規用法,並且這兩個之間可以相互轉換,這導致很多人認為這兩者基本相同。但...
string和StringBuilder的區別
博主最近做訂餐系統,因為是在成品上進行迭代開發,所以裡面就有很多前人的智慧型和。神奇之處。然後我就看到了下面這一堆 stringbuilder sb new stringbuilder 訂單排到上面 if flagz 後面n多行後面還有就不整出來了,這堆 給我看蒙了,先不說好壞,不過做到了整齊。然後...