stringbuilder100次拼装字符串所消耗的时间

xiezhou927 2008-09-07 04:52:51
写两个方法分别计算string和stringbuilder100次拼装字符串所消耗的时间

刚学C#不是很会,请教下
...全文
191 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
brallow 2008-09-07
  • 打赏
  • 举报
回复

public bool TestResult(string s)
{
return s.Length>=9 && s.SubString(0,3).ToUpper()=="HBR" && s.SubString(s.Length-3,3).ToUpper()=="EXE";
}


在任何你要测试的地方,假设你要测试的字符串名称为:strResult;

if(TestResult(strResult))
{
Console.WriteLine("符合");
}
else
{
Console.WriteLine("不符合");
}
xiezhou927 2008-09-07
  • 打赏
  • 举报
回复
还有个小问题:
先判断输入字符串的Length>=9,再判断头三个字母==“HBR”,后三个字母==”exe”
(注意大小写),满足条件就 输出“符合”,不满足就输出“匹配失败”

怎么弄啊
brallow 2008-09-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wdgphc 的回复:]
用StopWatch类好像更准一些.
[/Quote]
从没用过,我研究一下。谢谢老大!
JeffChung 2008-09-07
  • 打赏
  • 举报
回复
那我改成SrtingBuilder的,嘿嘿
DateTime timeStart = DateTime.Now;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100; i++)
{
sb.Append("People");
}
DateTime timeEnd = DateTime.Now;
TimeSpan sp = timeEnd - timeStart;
Console.Write("拼装字符串所用的时间为:{0}",sp);
wdgphc 2008-09-07
  • 打赏
  • 举报
回复
用StopWatch类好像更准一些.
brallow 2008-09-07
  • 打赏
  • 举报
回复
HOHO,临时写了一个只是大概结果。其中未准确的度量循环的开销:
输出的结果是:

633564039022343750
633564039111875000
633564039112031250
D12:89531250
D23:156250
D12/D23:573


输出的值分别是:
开始时间(Ticks)
第一项测试结束时间(第二项测试开始时间)(Ticks)
第二项测试结束时间(Ticks)
D12:第一次测试的总时长
D23:第二次测试的总时长
D12/D23:第一次测试时间比上(除以)第二次测试时间

我之所以使用Ticks时间是使用普通的时间格式无法表示出这么精确的时间差。对了上面的测试结果是我进行了10000次拼装的结果。100次根据看不出区别。


class Program
{

public static string A;
public static StringBuilder BA;

public static void Test1(int K)
{
string ret = "";
for (int i = 0; i < K; i++)
{
ret += A;
}
//ret是拼装结果
}

public static void Test2(int K)
{
string ret = "";
for (int i = 0; i < K; i++)
{
BA.Append(A);
}
ret = BA.ToString();
//ret是拼装结果
}


static void Main(string[] args)
{

//A为100个字母K;
A = new String('K', 100);
BA = new StringBuilder();

int K = 10000;

//输出当前时间
long l1, l2, l3;
l1 = DateTime.Now.Ticks;
Console.WriteLine(l1.ToString());
Test1(K);

l2 = DateTime.Now.Ticks;
Console.WriteLine(l2.ToString());

Test2(K);
l3 = DateTime.Now.Ticks;
Console.WriteLine(l3.ToString());

long d12, d23;
d12 = l2 - l1;
d23 = l3 - l2;

Console.WriteLine("D12:{0}", d12);
Console.WriteLine("D23:{0}", d23);

Console.WriteLine("D12/D23:{0}", d12 / (float)d23);


Console.ReadLine();
}
}
xiezhou927 2008-09-07
  • 打赏
  • 举报
回复
***************************************************
DateTime timeStart = DateTime.Now;
String s = "Chinese";
for (int i = 0; i < 100; i++)
{
s += "People";
}
DateTime timeEnd = DateTime.Now;
TimeSpan sp = timeEnd - timeStart;
Console.Write("拼装字符串所用的时间为:{0}",sp);
******************************************************
这样写可以吗?
wang51346 2008-09-07
  • 打赏
  • 举报
回复
DateTime.Now
1. C#语言方面... 4 1.1 垃圾回收... 4 1.1.1 避免不必要的对象创建... 4 1.1.2 不要使用空析构函数 ★... 4 1.1.3 实现 IDisposable 接口... 4 1.2 String 操作... 5 1.2.1 使用 StringBuilder字符串连接... 5 1.2.2 避免不必要的调用 ToUpper 或 ToLower 方法... 5 1.2.3 最快的空串比较方法... 6 1.3 多线程... 6 1.3.1 线程同步... 6 1.3.2 使用 ThreadStatic 替代 NameDataSlot ★... 7 1.3.3 多线程编程技巧... 7 1.4 类型系统... 8 1.4.1 避免无意义的变量初始化动作... 8 1.4.2 ValueType 和 ReferenceType. 8 1.4.3 尽可能使用最合适的类型... 9 1.5 异常处理... 10 1.5.1 不要吃掉异常★... 10 1.5.2 不要吃掉异常信息★... 10 1.5.3 避免不必要的抛出异常... 10 1.5.4 避免不必要的重新抛出异常... 10 1.5.5 捕获指定的异常,不要使用通用的System.Exception. 10 1.5.6 要在finally里释放占用的资源... 11 1.6 反射... 11 1.6.1 反射分类... 12 1.6.2 动态创建对象... 12 1.6.3 动态方法调用... 12 1.6.4 推荐的使用原则... 12 1.7 基本代码技巧... 13 1.7.1 循环写法... 13 1.7.2 拼装字符串... 13 1.7.3 避免两检索集合元素... 13 1.7.4 避免两类型转换... 14 1.7.5为字符串容器声明常量,不要直接把字符封装在双引号" "里面。... 14 1.7.6 用StringBuilder代替使用字符串连接符 “+”. 14 1.7.7 避免在循环体里声明变量,... 15 1.8 Hashtable. 15 1.8.1 Hashtable机理... 15 1.8.2 使用HashTale代替其他字典集合类型的情形:... 16 1.9 避免使用ArrayList。... 16 1.10从XML对象读取数据... 17 1.11 避免使用递归调用和嵌套循环,... 17 1.12 使用适当的Caching策略来提高性能... 17 2. Ado.Net 17 2.1 应用Ado.net的一些思考原则... 18 2.2 Connection. 18 2.2.1 在方法中打开和关闭连接... 18 2.2.2 显式关闭连接... 18 2.2.3 确保连接池启用... 19 2.2.4 不要缓存连接... 19 2.3 Command. 19 2.3.1 使用ExecuteScalar和ExecuteNonQuery. 19 2.3.2 使用Prepare. 19 2.3.3 使用绑定变量 ★... 19 2.4 DataReader 20 2.4.1 显式关闭DataReader 20 2.4.2 用索引号访问代替名称索引号访问属性... 20 2.4.3 使用类型化方法访问属性... 20 2.4.4 使用多数据集... 20 2.5 DataSet 21 2.5.1 利用索引加快查找行的效率... 21 2. 使用DataView.. 21 3.ASP.NET. 21 3.1 减少往返行程(Reduce Round Trips)... 21 3.2 避免阻塞和长时间的作业... 22 3.3 使用缓存... 22 3.4 多线程... 22 3.5 系统资源... 23 3.6 页面处理... 23 3.7 ViewState. 23 4.JScript 24 4.1 JScript性能优化的基本原则... 24 4.2 JScript语言本身的优化... 24 4.3 DOM相关... 27 4.4 其他... 28

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧