• .NET中的字符串(5):字符串驻留


    StringBuilder对象

    通过上面的分析可以看出,String类型在做字符串的连接操作时,效率是相当低的,并且由于每做一个连接操作,都会在内存中创建一个新的对象,占用了大量的内存空间。这样就引出StringBuilder对象,StringBuilder对象在做字符串连接操作时是在原来的字符串上进行修改,改善了性能。这一点我们平时使用中也许都知道,连接操作频繁的时候,使用StringBuilder对象。但是这两者之间的差别到底有多大呢?来做一个测试:

    1using System;
    2using System.Text;
    3
    4namespace Demo5
    5{
    6 /**//// <summary>
    7 /// String和StringBulider比较
    8 /// </summary>
    9 public class Test
    10 {
    11 public static void Main(string[] args)
    12 {
    13 string a = "";
    14 StringBuilder s = new StringBuilder();
    15
    16 int times = 10000;
    17 int start,end;
    18 
    19 /**////测试String所用的时间
    20 start = Environment.TickCount;
    21 for(int i=0;i<times;i++)
    22 {
    23 a += i.ToString();
    24 }
    25 end = Environment.TickCount;
    26 Console.WriteLine((end-start));
    27 
    28 /**////测试StringBuilder所用的时间
    29 start = Environment.TickCount;
    30 for(int i=0;i<times;i++)
    31 {
    32 s.Append(i.ToString());
    33 }
    34 end = Environment.TickCount;
    35 Console.WriteLine((end-start));
    36
    37 Console.ReadLine();
    38 }
    39 }
    40}
    41
    运行结果:
    
    884
    
    0
    


    通过上面的分析,可以看出用String来做字符串的连接时效率非常低,但并不是所任何情况下都要用StringBuilder,当我们连接很少的字符串时可以用String,但当做大量的或频繁的字符串连接操作时,就一定要用StringBuilder。

  • 相关阅读:
    关于Linux_CentOS8.0安装软件时遇到的坑
    Docker基本命令
    mobilenetV2 +ssd相关文章梳理汇总
    FCN.py语义分割脚本代码小白级注释
    剑指 Offer 09. 用两个栈实现队列
    剑指 Offer 05. 替换空格
    剑指 Offer 04. 二维数组中的查找
    剑指 Offer 10 I. 斐波那契数列
    剑指 Offer 30. 包含min函数的栈
    剑指 Offer 06. 从尾到头打印链表
  • 原文地址:https://www.cnblogs.com/hoosway/p/3600600.html
Copyright © 2020-2023  润新知