它可能会,也可能不会,这取决于。
唯一确定的方法是实际测量它。
为此,请使用 BenchmarkDotNet,这是一个可以在LINQPad或控制台应用程序中运行的示例:
void Main()
{
BenchmarkSwitcher.FromAssembly(GetType().Assembly).RunAll();
}
public class Benchmarks
{
[Benchmark]
public void Option1()
{
// foreach (var q in baseQuery)
// {
// m_TotalCashDeposit += q.deposit.Cash;
// m_TotalCheckDeposit += q.deposit.Check;
// m_TotalCashWithdrawal += q.withdraw.Cash;
// m_TotalCheckWithdrawal += q.withdraw.Check;
// }
}
[Benchmark]
public void Option2()
{
// m_TotalCashDeposit = baseQuery.Sum(q => q.deposit.Cash);
// m_TotalCheckDeposit = baseQuery.Sum(q => q.deposit.Check);
// m_TotalCashWithdrawal = baseQuery.Sum(q => q.withdraw.Cash);
// m_TotalCheckWithdrawal = baseQuery.Sum(q => q.withdraw.Check);
}
}
BenchmarkDotNet是一个强大的性能测量库,比简单地使用 Stopwatch 准确得多,因为它将使用统计上正确的方法和方法,并且还会考虑 JITting 和 GC 等因素。
现在我年纪大了,也更聪明了,我不再相信使用秒表是衡量性能的好方法。我不会删除旧的答案,因为谷歌和类似的链接可能会导致人们在这里寻找如何使用秒表来衡量性能,但我希望我在上面添加了一个更好的方法。
原答案如下
测量它的简单代码:
Stopwatch sw = new Stopwatch();
sw.Start();
// your code here
sw.Stop();
Debug.WriteLine("Time taken: " + sw.ElapsedMilliseconds + " ms");
sw.Reset(); // in case you have more code below that reuses sw
您应该多次运行代码以避免 JITting 对您的计时产生太大影响。