我已经在我的代码中实现了一个计算,其中pc将0到999999999之间的所有数字加在一起并输出答案。按此按钮和屏幕上显示答案之间需要几秒钟的时间。现在我想要一个秒表或计时器,当我按下按钮时,只要答案出现在屏幕上并且告诉我需要多长时间,它就会开始和停止。以下是我实施的内容,但是我被" 00:00:00"击中。我是错误的假设它只是按下按钮开始和循环停止和显示时间之后?
if (GUI.Button(new Rect(100, 275, 300, 25), "Add All numbers between 1 and 999999999"))
{
AddAllNumbersMax();
stopWatch.Start();
}
}
GUI.TextArea(new Rect(275, 100, 300, 300), _messageLog);
}
void AddAllNumbersMax()
{
int max = 999999999;
double result = 0;
for (int i = 0; i<=max; i++)
{
result += i;
}
_messageLog += result + "\n";
stopWatch.Stop ();
_messageLog += stopWatch.Elapsed;
}
UPDATE **
感谢您的快速回复,我看到我现在出错的地方!不幸的是,如此低的代表,我无法提升你的答案:(但不管怎样,谢谢!清晨责备!
答案 0 :(得分:3)
如果我理解正确,你想测量AddAllNumbersMax()的运行时间,在这种情况下你必须在方法调用之前启动秒表,然后停止它:
if (GUI.Button(new Rect(100, 275, 300, 25), "Add All numbers between 1 and 999999999"))
{
stopWatch.Start();
AddAllNumbersMax();
stopWatch.Stop();
// Do something with elapsed time
}
答案 1 :(得分:2)
你在开始之前停止秒表
尝试:
if (GUI.Button(new Rect(100, 275, 300, 25), "Add All numbers between 1 and 999999999"))
{
stopWatch.Start();
AddAllNumbersMax();
}
GUI.TextArea(new Rect(275, 100, 300, 300), _messageLog);
}
void AddAllNumbersMax()
{
int max = 999999999;
double result = 0;
for (int i = 0; i<=max; i++)
{
result += i;
}
_messageLog += result + "\n";
stopWatch.Stop ();
_messageLog += stopWatch.Elapsed;
}
答案 2 :(得分:1)
AddAllNumbersMax();
stopWatch.Start();
这将首先执行AddAllNumbersMax
- 它依次调用stopWatch.Stop()
并读取已用时间 - 只有然后它将启动时间
如果您要测量AddAllNumbersMax
所需的时间,那么在那里启动秒表也许是一个好主意。或者将整个秒表业务移出方法并将其置于通话之外。
答案 3 :(得分:1)
很明显,因为程序首先要执行你的AddAllNumbersMax(),当这个操作结束时,app会启动计时器。 你应该这样做:
stopWatch.Start();
AddAllNumbersMax();
stopWatch.Stop();