在C# .NET Core测试查询执行时间及VS2017代码逻辑对比
我来帮你逐一解决这两个问题哈!
如何在C# .NET Core中测试查询的执行时间?
最常用且直观的方法就是用System.Diagnostics.Stopwatch类,它能精准记录代码段的执行时长,步骤很简单:
- 引入
System.Diagnostics命名空间 - 实例化并启动
Stopwatch - 执行你要测试的查询逻辑
- 停止计时并读取耗时
给你个实际代码示例:
using System.Diagnostics; using Microsoft.EntityFrameworkCore; // 假设你有一个DbContext实例 var dbContext = new YourDbContext(); var stopwatch = Stopwatch.StartNew(); // 这里替换成你的查询,比如EF Core查询 var result = await dbContext.YourEntities .Where(e => e.SomeCondition) .ToListAsync(); stopwatch.Stop(); Console.WriteLine($"查询执行耗时:{stopwatch.ElapsedMilliseconds} 毫秒"); // 也可以输出更精细的时间,比如总秒数:stopwatch.Elapsed.TotalSeconds
小提示:
- 建议多次测试取平均值,避免第一次JIT编译、缓存等因素影响结果
- 如果是异步查询,记得用
await,Stopwatch同样能正确记录异步代码的执行时间 - 如果你想监控EF Core的SQL执行细节,还可以开启EF Core的日志功能,不过单纯测执行时间的话Stopwatch足够高效
对比两段分页逻辑代码的等价性
先把两段代码清晰列出来:
原代码:
EndIndex = TotalPages <= PageButtons ? TotalPages : Math.Max(PageButtons, Math.Min((PageIndex + pageRange), TotalPages));
示例代码:
AltEndIndex = TotalPages <= PageButtons ? TotalPages : (PageButtons > (PageIndex + pageRange) ? PageButtons : (TotalPages < (PageIndex + pageRange) ? TotalPages : PageIndex + pageRange));
我们来拆解逻辑对比:
第一个分支完全一致:当
TotalPages <= PageButtons时,两段代码都返回TotalPages,这部分没差别。重点看else分支(即
TotalPages > PageButtons的情况):- 原代码用
Math.Max(PageButtons, Math.Min(PageIndex+pageRange, TotalPages)),逻辑是:先取PageIndex+pageRange和TotalPages的较小值(确保不超过总页数),再和PageButtons取较大值(确保至少显示指定数量的按钮)。 - 示例代码用嵌套三元表达式,我们逐一层拆解:
- 如果
PageButtons > (PageIndex + pageRange):返回PageButtons→ 这和原代码中Math.Min得到PageIndex+pageRange,再和PageButtons取Max的结果一致。 - 如果
PageButtons <= (PageIndex + pageRange):- 若
TotalPages < (PageIndex + pageRange):返回TotalPages→ 因为else分支前提是TotalPages > PageButtons,所以Math.Max(PageButtons, TotalPages)就是TotalPages,和示例结果一致。 - 若
TotalPages >= (PageIndex + pageRange):返回PageIndex + pageRange→ 此时Math.Min得到PageIndex+pageRange,再和PageButtons取Max(因为PageButtons <= PageIndex+pageRange),结果就是PageIndex+pageRange,和示例一致。
- 若
- 如果
- 原代码用
结论:两段代码的逻辑完全等价,无论传入什么符合业务场景的参数,最终得到的EndIndex和AltEndIndex都会是相同的值。
内容的提问来源于stack exchange,提问作者dave317
相关产品推荐
相关产品推荐

