gpt4 book ai didi

c# - 测量查询的代码性能,如何看待结果?

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:49 24 4
gpt4 key购买 nike

我有一些看起来像这样的代码:

    public void SomeMethodThatLoadsUserData()
{
Stopwatch sw = new Stopwatch();
sw.Start();

Parallel.Invoke(Method1, Method2, .... , Method12);

sw.Stop();
var t = sw.ElapsedMilliseconds;
}

这些方法中的每一个最终都会调用数据库中的查询。当我点击“调试”按钮时,这段代码第一次运行大约需要 1200 毫秒。然后,当我按下重启按钮时,大约 10 次后,结果平均为 220 毫秒左右。

这个巨大的差距是因为 A) 第一次应用程序必须进行某种编译并且生产环境中的实际结果将更接近 220 毫秒的平均值吗?进入我的笔记本电脑或B)数据缓存在SQL服务器中,当我重新启动时,数据从缓存中读取,因此该方法在生产环境中的实际性能实际上更接近于我在第一次运行时看到的 1200 毫秒。

感谢您就如何阅读这些数字提出建议。

最佳答案

这可能是由于缓存,这取决于您查询数据库的方式(orm 可能缓存,DB 缓存,..)。您必须考虑以下几点:

  • 只运行此方法一次没有任何意义,运行它几百次并取平均值。因此,您可以消除启动时间、冷缓存以及 .NET 运行时必须在运行时加载的任何内容。
  • 模拟数据库以查看是否有任何缓存发生在数据库端或延迟是否有影响
  • 对于许多数据库,有一些工具可以帮助优化 SQL 查询,尤其是对于您正在使用的数据库。如果您想对查询进行基准测试,请使用这些。
  • 使用发布版本运行基准测试,因为它们可能会更加优化

关于c# - 测量查询的代码性能,如何看待结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11603802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com