StringBuilder和Stopwatch使用初步
来源:互联网 发布:上瘾网络剧下载种子 编辑:程序博客网 时间:2024/05/17 01:38
string在进行运算时(如赋值、拼接等)会产生一个新的实例,而StringBuilder则不会。
所以在大量字符串拼接或频繁对某一个字符串进行操作时最好使用StringBuilder,而非string。
string类型在进行重复的拼接赋值操作的时候,之所以速度慢,效率低,是因为它在内存的堆中不停的开辟空间,而StringBuilder之所以速度快,效率高,是因为在整个的拼接、赋值操作中,它只是操作的一块内存,并没有再单独的开辟新空间(省略了开辟空间的时间)。
若要使用Stopwatch这个类,需要先添加命名空间引用:
using System.Diagnostics; //可以通过右键添加或者快捷键:Alt+Shift+F10Stopwatch sw=new Stopwatch(); //这个类一般记录程序运行的时间
sw.Start();
/*
//add code
*/
sw.Stop();
Console.WriteLine(sw.Elapsed);
效果对比:
使用string时:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Diagnostics;namespace StringBuilderandStopWatch{ class Program { static void Main(string[] args) { string str = ""; Stopwatch sw = new Stopwatch();//这个类一般用来记录程序运行的时间 sw.Start(); for (int i = 0; i < 100000; i++) { str += "1"; } sw.Stop(); Console.WriteLine(sw.Elapsed); Console.ReadKey(); } }}耗时:
使用StringBuilder时:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Diagnostics;namespace StringBuilderandStopWatch{ class Program { static void Main(string[] args) { StringBuilder sb = new StringBuilder(); Stopwatch sw = new Stopwatch();//这个类一般用来记录程序运行的时间 sw.Start(); for (int i = 0; i < 100000; i++) { <span style="color:#FF0000;"><strong> sb.Append("1");</strong></span> } sw.Stop(); Console.WriteLine(sw.Elapsed); Console.ReadKey(); } }}耗时:
对比发现,两者相差竟达2835倍!
0 0
- StringBuilder和Stopwatch使用初步
- C# StringBuilder的介绍和使用、Stopwatch 计算程序运行的时间
- Java String类和StringBuilder初步认识
- apache的StopWatch使用
- apache StopWatch基本使用
- apache StopWatch基本使用
- StopWatch 简单使用
- Stopwatch的使用
- Date.Now 和 StopWatch
- String和StringBuilder-使用 StringBuilder 类(MSDN)
- 使用StringBuilder, StringBuilder和String的区别
- 使用StringBuilder, StringBuilder和String的区别
- 使用 StringBuilder 【String和StringBuilder】比较
- 使用StringBuilder, StringBuilder和String的区别
- 使用StringBuilder, StringBuilder和String的区别
- Stopwatch
- Stopwatch
- Stopwatch
- 算法训练 Hanoi问题
- [Golang]堆栈解析
- python的str,unicode对象的encode和decode方法(转)
- Hive实战 函数Find_in_set
- Codeforces #295(Div 2) A Pangram、B Two Buttons、C DNA Alignment
- StringBuilder和Stopwatch使用初步
- 他山之石--Shiro架构
- iOS_导入libxml2.2框架后,找不到<libxml/tree.h>的解决办法
- 单链表的创建 测长和打印
- j2se可切换标签控件JTabbedPane的使用实例
- [Golang]互斥到底该谁做?channel还是Mutex
- intellIJ idea 配置 svn
- 下拉刷新和下拉加载的原理
- C++构造函数例子