哪个更快:适当的数据输入还是适当的数据结构?

vad*_*vad 5 c performance

我有一个数据集,其列如下所示:

Consumer ID | Product ID | Time Period | Product Score
1           | 1          | 1           | 2
2           | 1          | 2           | 3
Run Code Online (Sandbox Code Playgroud)

等等.

作为计划的一部分(用C语言编写),我需要处理所有消费者针对特定产品和时间段组合给出的所有可能组合的产品分数.假设有3个产品和2个时间段.然后我需要处理所有可能组合的产品分数,如下所示:

Product ID | Time Period 
1          | 1
1          | 2
2          | 1
2          | 2
3          | 1
3          | 2
Run Code Online (Sandbox Code Playgroud)

我将需要多次处理上述行的数据(> 10k)并且数据集相当大(例如,48k消费者,100个产品,24个时间段等).所以速度是一个问题.

我想出了两种处理数据的方法,我想知道哪种方法更快,或者可能无关紧要?(速度很重要,但不会以过度维护/可读性为代价):

  1. 对产品ID和时间段的数据进行排序,然后遍历数据以提取所有可能组合的数据.

  2. 存储为产品ID和时间段的特定组合提供产品分数的所有消费者的消费者ID,并相应地处理数据.

有什么想法吗?还有其他方法可以加快处理速度吗?谢谢

dan*_*ben 3

与许多与性能相关的问题一样,唯一真正、明确的答案是编写基准测试。速度取决于很多因素,听起来你并不是在谈论线性算法与二次算法的简单情况(甚至这还对输入大小有额外的依赖性)。

因此,实现这两种方法,在样本数据上运行它们,并对结果进行计时。这比我们用有限的信息在头脑中解决问题要快得多,也更有结论性。