我有两个方程,当我为每个方程做算法时,如何计算每个方程的时间。
我有等式ex(int x=(y+x-z)/y)
和另一个(int a=(a+b/c)*q)
,我想知道哪个更快。我想计算每个方程的时间,并在c#中找到哪个更快。
答案 0 :(得分:0)
使用Stopwatch
(System.Diagnostics.Stopwatch
)。
例如:
Stopwatch sw = new Stopwatch();
sw.Start();
// Run your equation here.
sw.Stop();
var elapsed = sw.ElapsedMilliseconds;
Console.Write(elapsed.ToString());
请注意,您应该多次运行测试以获得准确的表示。
答案 1 :(得分:-3)
这是一种方法。首先(可选,但它可以保持主代码更清晰),创建两个可以调用的方法来进行计算:
public static int EquasionOne(int x, int y, int z)
{
return (y + x - z) / y;
}
public static int EquasionTwo(int a, int b, int c, int q)
{
return (a + b / c) * q;
}
然后,使用Stopwatch
,将每个方法调用相同的次数并比较结果。下面的代码使用ElapsedTicks
,但您也可以使用ElapsedMiliseconds
,或者如果它真的长时间运行,您可以使用Elapsed
属性本身,这是TimeSpan
:< / p>
public static void Main()
{
const int iterations = 10000;
var sw = new Stopwatch();
sw.Start();
for (int i = 0; i < iterations; i++)
{
var z = EquasionOne(1, 2, 3);
}
sw.Stop();
Console.WriteLine("Equation one took: {0} ticks", sw.ElapsedTicks);
sw.Restart();
for (int i = 0; i < iterations; i++)
{
var z = EquasionTwo(1, 2, 3, 4);
}
sw.Stop();
Console.WriteLine("Equation two took: {0} ticks", sw.ElapsedTicks);
}