gpt4 book ai didi

optimization - 特定例程的性能指标 : any best practices?

转载 作者:行者123 更新时间:2023-12-03 05:12:48 28 4
gpt4 key购买 nike

我想收集有关我的代码的特定例程的指标,以了解可以最好地优化的地方。让我们举一个简单的例子,假设我有一个包含多个“学生”的“类(class)”数据库。假设当前的代码为每个学生调用数据库,而不是一次性批量获取所有学生。我想了解每个学生行每次访问数据库需要多长时间。

这是用 C# 编写的,但我认为它适用于任何地方。通常,当我对特定例程的性能感到好奇时,我会在运行之前创建一个 DateTime 对象,运行该例程,然后在调用后创建另一个 DateTime 对象,并获取两者之间的毫秒差来查看它运行的时间。通常我只是在页面的跟踪中输出它......所以它有点低保真。有这方面的最佳实践吗?我想过能够将网络应用程序置于某种“诊断”模式,并用我想要的任何东西进行详细的日志记录/事件日志写入,但我想看看 stackoverflow hive 思维是否有更好的想法。

最佳答案

对于数据库查询,您有两个小问题。缓存:数据缓存和语句缓存。

如果运行查询一次,该语句将被解析、准备、绑定(bind)并执行。数据从文件中提取到缓存中。

当您第二次执行查询时,将使用缓存,并且性能通常会好得多。

哪个是“真实”性能数字?第一个还是第二个?有些人说“最坏情况”是真实的数字,我们必须对其进行优化。其他人说“典型情况”并运行查询两次,忽略第一次。还有人说“平均”,跑30次,取平均值。其他说“典型平均”,运行 31 次并平均最后 30 次。

我建议“31 中的最后 30 个”是最有意义的数据库性能数字。不要为你无法控制(解析、准备、绑定(bind))时间的事情而烦恼。专注于您可以控制的内容——数据结构、I/O 加载、索引等。

关于optimization - 特定例程的性能指标 : any best practices?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/287278/

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