2017-03-02 30 views
-1

讓我舉個例子。在5個小時內,我將收到數據,雙倍(0-2值,如1.4525),總值將高達5-10k,因此它將是每秒幾個值。我需要在會話期間將其存儲在某個位置,然後計算所有值的平均值。該應用程序將在前臺工作。斯威夫特。存儲大量數字並計算平均值

我不知道該如何處理這麼大的數據。因此,有2個問題:

  • 在何處存儲它們(本地文件在內存中數組?)
  • 如何從這麼大的量計算平均
  • (從小型(SUM/COUNT)?)
+0

這根本不算什麼大數目,只要做到最簡單的方法就可以了,此外,如果你所需要的只是平均數,那麼你可以保留一個正在運行的總數,而不是所有的數值。 – pvg

回答

1

10,000個雙打,每個項目8個字節,只有80,000個字節(80k)。這是相當少量的數據。您可以使用內存雙倍數組。

從表現上看,現代iPhone只需要一秒鐘的時間就可以完成10,000次加法和分割。您可以在任何時候計算平均值,而不會造成很大的速度損失。只有當你在一個循環中反覆進行,你會看到一個性能損失。

正如pvg在他的評論中指出的那樣,如果你所需要的只是平均值,那麼你可以簡單地存儲一個總和和值的數量,它只有2個雙打,而不是10,000個。 (你會每個新值只是添加的總和,增加計數,然後重新計算平均爲:

ave = sum/count 

你也可以投你的陣列到一個NSArray,它很容易寫入的plist