迅速。存储大量数字并计算平均值

时间:2017-03-02 20:03:10

标签: ios arrays swift algorithm arraylist

让我举个例子。在5个小时内,我将收到数据,双打(0-2值,如1.4525),总值将达到5-10k,因此它将是每秒几个值。我需要在该会话期间将其存储在某处并在计算所有值的平均值之后。该应用程序将在前台工作。

我不确定如何处理这么大的数据。所以,有2个问题:

  • 在哪里存储它们(本地文件?在内存中作为数组?)
  • 如何从如此大的数量(从小?(总和/数))
  • 计算平均值

1 个答案:

答案 0 :(得分:1)

10,000个双打,每个项目8个字节,只有80,000个字节(80k)。这是一个非常少量的数据。你可以使用内存中的双打数组。

性能方面,现代iPhone只需要几分之一秒即可完成10,000次加法和分组。您可以随时计算平均值,而不会有太多的速度惩罚。只有当您在一个看到性能下降的循环中反复进行此操作时才会这样做。

正如pvg在他的评论中所指出的那样,如果你所需要的只是平均数,那么你可以简单地存储一个总和和值的数量,这只是2个双倍,而不是10,000个。 (您只需将每个新值添加到总和中,递增计数,然后重新计算平均值:

ave = sum/count

您也可以将数组转换为NSArray并将其写入plist非常容易。