国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

多用StringBuilder,少用字符串拼接

2019-11-14 16:06:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在C#中,在處理字符串拼接的時(shí)候,使用StringBuilder的效率會(huì)比硬拼接字符串高很多。到底有多高,如下:

 

        static void Main(string[] args)
        {
            string str1 = string.Empty;
            Stopwatch sw1 = new Stopwatch();
            sw1.Start();
            for (int i = 0; i < 10000; i++)
            {
                str1 = str1 + i.ToString();
            }
            sw1.Stop();
            Console.WriteLine("拼接字符串所耗費(fèi)時(shí)間為:" + sw1.ElapsedMilliseconds + "毫秒");
            StringBuilder str2 = new StringBuilder(10000);
            Stopwatch sw2 = new Stopwatch();
            sw2.Start();
            for (int i = 0; i < 10000; i++)
            {
                str2.Append(i.ToString());
            }
            sw2.Stop();
            Console.WriteLine("使用StringBuilder所耗費(fèi)時(shí)間為:" + sw2.ElapsedMilliseconds + "毫秒");
            Console.ReadKey();
        }

1

 

為什么?

 

string類型的特別之處在于我們可以像使用值類型那樣使用string類型,而實(shí)際上string是引用類型。既然是引用類型,CLR就會(huì)把string類型保存在托管堆上。當(dāng)我們使用str1 = str1 + i.ToString();進(jìn)行拼接,由于string類型的恒定性,不會(huì)改變str1在內(nèi)存中的地址,而是在托管堆上創(chuàng)建了另外一個(gè)字符串對(duì)象。如此,拼接10000次,就創(chuàng)建了10000個(gè)string類型對(duì)象,效率難免低下。

 

而StringBuilder會(huì)在內(nèi)存中開(kāi)辟一塊連續(xù)的內(nèi)存,當(dāng)增加字符串實(shí)際上是針對(duì)同一塊內(nèi)存的修改,所以效率更高。  

 

當(dāng)然,到底使用硬拼接字符串,還是使用StringBuilder,不是絕對(duì)的,要看情況。當(dāng)拼接字符串很少的情況下,當(dāng)然直接硬拼接字符串就行了。    


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 屯留县| 百色市| 怀宁县| 五莲县| 灵武市| 衡东县| 安福县| 和龙市| 皮山县| 大庆市| 揭阳市| 丰原市| 随州市| 孝昌县| 弥勒县| 同心县| 资源县| 泉州市| 太原市| 天峨县| 福鼎市| 邵阳市| 荆州市| 固安县| 台州市| 宜宾县| 宁蒗| 上蔡县| 湖北省| 张北县| 太仆寺旗| 响水县| 虎林市| 眉山市| 琼中| 天津市| 鄂州市| 镇康县| 新河县| 龙海市| 象山县|