c++ - 表访问性能

标签 c++ c performance oracle-pro-c

我们有一个完全用 C 编写的应用程序。对于代码内部的表访问,例如从表中获取一些值,我们使用 Pro*C。为了提高应用程序的性能,我们还预加载一些表来获取数据。一般来说,我们获取一些输入字段并从表中获取输出字段。

表中通常有大约 30000 个条目,有时最多可达 10 万个。

但是如果表条目增加到大约 1000 万个条目,我认为这会对应用程序的性能产生危险的影响。

我有什么地方说错了吗?如果确实影响性能,有什么办法可以保持应用的性能稳定吗?

考虑到应用程序处理表的方式,如果表中的行数增加到 1000 万行,可能的解决方法是什么?

最佳答案

如果您不对表格进行排序,您将获得按比例增加的搜索时间...如果您没有编写任何错误的代码,在您的示例中(30K 与 1M),您将获得 33 倍的搜索时间。我假设您正在增量迭代(i++ 样式)该表。

但是,如果可以以某种方式对表进行排序,那么您可以大大减少搜索时间。这是可能的,因为搜索排序信息的索引器算法不会解析每个元素,直到找到要查找的元素为止:它使用辅助表(树、散列等),通常搜索速度要快得多,然后精确定位正确的查找元素,或者至少可以更接近地估计它在主表中的位置。

当然,这将以必须对表进行排序为代价,无论是在其中插入或删除元素时,还是在执行搜索时。

关于c++ - 表访问性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1858825/

相关文章:

c++ - 试图删除选定节点的双向链表

c - 服务器无法接受来自多个客户端的消息?

mysql - 使用 LEFT() 函数的查询性能不佳

asp.net - 如何跟踪生产环境中偶发的 ASP.NET 性能问题?

c++ - 如何在 SendMessage 中使用 EM_SETSCROLLPOS 滚动到文本框的底部?

c++ - 对象的访问冲突

c++ - 用C++读取/写入二进制文件

与 GUI 有关的循环中的 CPU 松弛和延迟

c++ - 为什么在 C++ 中必须从 void 指针进行类型转换?

mysql查询获取前200个字符