处理复杂直方图数据的最有效方法?

时间:2012-02-06 00:58:38

标签: c++ performance qt data-structures

我目前正在实施一个使用Qt显示非常大规模数据的直方图,我对我应该为我的问题使用哪些数据结构有所怀疑。我将显示从应用程序的用户收到的查询数量以及我应该显示的方式如下 - 在单个应用程序中,点击不同的“显示此数据等”时将显示不同的直方图按钮 -

1)显示每月每月-4个月数据总查询的直方图,I
当我抓住属于那些月份的查询时,保留了四个变量并递增它们 在CSV文件中 -

2)显示所选月份中每一天的总查询的直方图 - 我正在考虑使用4个QVectors来表示这个月的几个月,递增向量的每个元素(天),因为我来了具体日期 - 例如向量代表8月份,每当我遇到2011-08-XY的数据时,我会将该向量的第(XY + 1)个元素递增1 - 我的第二个选择是使用4个QLinkedList为了更好的复杂性,但我不确定我提出的方法是否足够有效,我愿意倾听任何其他想法。

3)这里的事情变得有点复杂。显示所选日期和月份中每小时的总查询的直方图。所表示的数据以巨大的方式相乘,我不知道哪个数据结构 - 或结构的组合 - 我应该使用它来实现这个。可能是列表清单?

在2)和3)对我的问题的任何想法都会有所帮助,在此先感谢。

2 个答案:

答案 0 :(得分:2)

实际上,每小时总是进行查询不应该太难以管理。假设每小时的查询数量永远不会超过最大int值,那么每天只有24英寸= 32位或64位,具体取决于您的计算机。假设32位,那么每MB可以获得长达28年的数据。

没有必要转移月/年 - 您的程序可以解决这个问题。只需将小时0分配给数据中的最早点,即保持常量,然后根据自那时起经过的小时数计算出日期。

这避免了必须有列表或任何花哨的东西 - 只需使用一个数组,其中每个地址包含从小时0开始的小时数,以及该小时的查询数。

答案 1 :(得分:1)

为什么不简单地使用经典数据库? 当您开始提出这类问题时,我认为现在是考虑更健壮的结构的好时机。在任何数据库中都实现了多个数据结构,针对不同的访问类型进行了优化。您应该考虑至少查找,插入,删除,范围查询。在所有成本中没有比其他结构更好的结构,因此总是存在权衡。

Qt你可以使用some database classes。我从未使用过Qt SQL库,但我认为你应该试一试。幸运的是,链接页面末尾有一个Qt SQL编程指南。