Delphi Dataset.Prior 与 Dataset.Next 性能对比

标签 delphi

在 Delphi 中,与 Dataset.Next 相比,使用 Dataset.Prior 是否会降低性能?

背景:

我有一个在数据集中搜索特定记录的例程。我从数据集中的最后一条记录开始,然后使用 Dataset.Prior 向后工作,直到找到匹配项。我使用这种从后到前的方法只是因为(在实践中)我正在寻找的记录更有可能接近数据集的末尾,所以在我看来,从后面开始会更快地找到记录。

然而,此逻辑基于 Dataset.Prior 和 Dataset.Next 具有或多或少相同的性能开销的假设。是这样吗?

最佳答案

这在很大程度上取决于数据集及其背后的数据库。有些甚至不支持它(所谓的“单向数据集”)。

您描述的问题听起来需要更专业的查询,而不是您当前的解决方案。如果您可以在查询中指定更多详细信息,您将在数据集中收到更少的数据,甚至可能只收到您需要的记录。几乎在任何情况下,由数据库完成过滤都会更快。

如果您需要在代码中进行搜索/过滤,那么也许您可以要求您的数据库至少以一种将更有可能的记录(可能按日期)放在前面的方式对数据进行排序。

但是如果您仍然需要了解您的特定数据集是否存在差异,您可以从前到后和从后到前循环遍历整个数据集并测量差异。 为此,请确保先打开查询/数据集,然后使用 DataSet.Last 跳转到最后一条记录,因为某些数据集不会一次获取所有数据,但这会强制它们这样做。之后,可以循环到第一条记录,然后再次循环到最后一条记录,同时用高精度计数器(QueryPerformanceCounter)测量每个循环。

关于Delphi Dataset.Prior 与 Dataset.Next 性能对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14898146/

相关文章:

delphi - 调试访问冲突错误?

delphi - 印地 HTTP : Cannot change Host header

delphi - delphi中初始化整数数组

delphi - 如何设置每个 TWebBrowser 使用独立代理?

delphi - 确定 TIBTransaction 是否有挂起的更改

delphi - 将Windows消息发送到另一台计算机

delphi - 在文本文件中搜索带有特定字符串的行

delphi - 如何从 Delphi 5 ActiveX dll 创建 MDI 子窗口,并将其嵌入到 Delphi XE MDI 父窗口中?

delphi - 调用OS函数后获得访问冲突00000000失败

delphi - 什么可能导致编译器不产生控制台输出