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

标签 optimization performance

我想收集有关我的代码的特定例程的指标,以了解可以最好地优化的地方。让我们举一个简单的例子,假设我有一个包含多个“学生”的“类(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/

相关文章:

performance - 在哪里可以了解低级、核心性能的东西?

c++ - 用一个 int 替换多个 bool 并使用位掩码的性能优势?

performance - zk vs gwt zk 请求太多

wpf - DrawingVisual vs Canvas.OnRender 对许多不断变化的形状的性能

性能测试基础知识

c++ - 二维数组搜索算法优化

c++ - 从文件中读取大量数据并以有效的方式解析日期。如何提高海量数据的性能?

java - 代码优化导致执行速度变慢 - 需要解释

sql-server - SQL Server 查询优化 : why CPU Time is higher than Elapsed Time ? 它们与设置操作相关吗?

java - 使用 eclipse、maven、spring、hibernate、jsf 快速重新加载开发中的 java web 应用程序中的更改