在C#中,怎样查看一个函数的运行时间?
在一段C#程序中有一个函数f(),我想知道运行完这段程序的时间中,运行f()的时间占了总时间的多大比例。请问有没有什么办法能够办得到?(我用的是vs2012)...
在一段C#程序中有一个函数f(),我想知道运行完这段程序的时间中,运行f()的时间占了总时间的多大比例。请问有没有什么办法能够办得到?(我用的是vs2012)
展开
4个回答
展开全部
System.DateTime t1, t2;
System.TimeSpan ts;
在f()里面,开始的地方添加
t1 = System.DateTime.Now;
在f()里面,结束的地方添加:
t2 = System.DateTime.Now;
ts = t2 - t1;
这个ts就是f()运行的时间,是个结构体,只能记录到毫秒。
你可以将其毫秒值赋值给一个变量
如:double fms = ts.TotalMilliseconds;
通过这个方法,你也可以将你程序总的运行时间记录下来。占比就很简单得到了。
System.TimeSpan ts;
在f()里面,开始的地方添加
t1 = System.DateTime.Now;
在f()里面,结束的地方添加:
t2 = System.DateTime.Now;
ts = t2 - t1;
这个ts就是f()运行的时间,是个结构体,只能记录到毫秒。
你可以将其毫秒值赋值给一个变量
如:double fms = ts.TotalMilliseconds;
通过这个方法,你也可以将你程序总的运行时间记录下来。占比就很简单得到了。
展开全部
c#有个Stopwatch用来计时的,按你的需求,代码可能是
Stopwatch sw1 = new Stopwatch();
Stopwatch sw2 = new Stopwatch();
sw1.Start();//主程序开始计时
//其它代码
sw2.Start();//f方法开始计时
f();
sw2.Stop();
//其它代码
sw1.Stop();
//sw1.ElapsedMilliseconds即为总耗时(毫秒),sw2.ElapsedMilliseconds为f运行耗时
//当然Stopwatch还有其它一些用法,比如分段记时等等,可以自己研究一下。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
以下程序的过程是,输出一个文本文件,给出哪些行是重复的,第一次出现的行号,格式如下行号 ,此行的文本内容,并给出此程序的运行时间.
static void Main(string[] args)
{
TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks);
StreamReader sr = new StreamReader(@"D:\文本.txt", System.Text.Encoding.Default); //the path of source file.
String strline="";
int number=1;//行号
StringBuilder sb=new StringBuilder();
Hashtable myHT=new Hashtable ();//定义哈希表,判断重复行
while((strline=sr.ReadLine())!=null)//判断当前读的一行字符串是不是为空,为空就不要判断后面
{
if (myHT.ContainsKey(strline))//判断当前这一行内容是不是已经存到哈希表了
{
sb.Append(myHT[strline].ToString() + " " + strline + "\r\n");//如果这一行内容已经添加过,则重复,把重复的内容放到StringBuilder中
}
else
{
myHT.Add(strline, number);//存入行的内容以及它的行号.
}
number++;
}
sr.Close();//结束
StreamWriter wr = new StreamWriter(@"D:\1.txt");//the output file.
wr.Write(sb+"");//输出StringBuilder到指定路径.
wr.Close();
TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks); //get current ticks.
string spanTotalSeconds = ts2.Subtract(ts1).Duration().TotalSeconds.ToString(); //计算整个程序的运行时间
Console.WriteLine(spanTotalSeconds);
Console.ReadKey();
}
static void Main(string[] args)
{
TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks);
StreamReader sr = new StreamReader(@"D:\文本.txt", System.Text.Encoding.Default); //the path of source file.
String strline="";
int number=1;//行号
StringBuilder sb=new StringBuilder();
Hashtable myHT=new Hashtable ();//定义哈希表,判断重复行
while((strline=sr.ReadLine())!=null)//判断当前读的一行字符串是不是为空,为空就不要判断后面
{
if (myHT.ContainsKey(strline))//判断当前这一行内容是不是已经存到哈希表了
{
sb.Append(myHT[strline].ToString() + " " + strline + "\r\n");//如果这一行内容已经添加过,则重复,把重复的内容放到StringBuilder中
}
else
{
myHT.Add(strline, number);//存入行的内容以及它的行号.
}
number++;
}
sr.Close();//结束
StreamWriter wr = new StreamWriter(@"D:\1.txt");//the output file.
wr.Write(sb+"");//输出StringBuilder到指定路径.
wr.Close();
TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks); //get current ticks.
string spanTotalSeconds = ts2.Subtract(ts1).Duration().TotalSeconds.ToString(); //计算整个程序的运行时间
Console.WriteLine(spanTotalSeconds);
Console.ReadKey();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个东西不用实际去运行,分析一下复杂度就可以估算出比例了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |