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

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

刚学C#不是很会,请教下
...全文
168 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

110,534

社区成员

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

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

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