You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C# .NET Core测试查询执行时间及VS2017代码逻辑对比

我来帮你逐一解决这两个问题哈!

如何在C# .NET Core中测试查询的执行时间?

最常用且直观的方法就是用System.Diagnostics.Stopwatch类,它能精准记录代码段的执行时长,步骤很简单:

  1. 引入System.Diagnostics命名空间
  2. 实例化并启动Stopwatch
  3. 执行你要测试的查询逻辑
  4. 停止计时并读取耗时

给你个实际代码示例:

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));

我们来拆解逻辑对比:

  1. 第一个分支完全一致:当TotalPages <= PageButtons时,两段代码都返回TotalPages,这部分没差别。

  2. 重点看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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:34:29