-1
讓我舉個例子。在5個小時內,我將收到數據,雙倍(0-2值,如1.4525),總值將高達5-10k,因此它將是每秒幾個值。我需要在會話期間將其存儲在某個位置,然後計算所有值的平均值。該應用程序將在前臺工作。斯威夫特。存儲大量數字並計算平均值
我不知道該如何處理這麼大的數據。因此,有2個問題:
- 在何處存儲它們(本地文件在內存中數組?)
- 如何從這麼大的量計算平均 (從小型(SUM/COUNT)?)
讓我舉個例子。在5個小時內,我將收到數據,雙倍(0-2值,如1.4525),總值將高達5-10k,因此它將是每秒幾個值。我需要在會話期間將其存儲在某個位置,然後計算所有值的平均值。該應用程序將在前臺工作。斯威夫特。存儲大量數字並計算平均值
我不知道該如何處理這麼大的數據。因此,有2個問題:
10,000個雙打,每個項目8個字節,只有80,000個字節(80k)。這是相當少量的數據。您可以使用內存雙倍數組。
從表現上看,現代iPhone只需要一秒鐘的時間就可以完成10,000次加法和分割。您可以在任何時候計算平均值,而不會造成很大的速度損失。只有當你在一個循環中反覆進行,你會看到一個性能損失。
正如pvg在他的評論中指出的那樣,如果你所需要的只是平均值,那麼你可以簡單地存儲一個總和和值的數量,它只有2個雙打,而不是10,000個。 (你會每個新值只是添加的總和,增加計數,然後重新計算平均爲:
ave = sum/count
你也可以投你的陣列到一個NSArray,它很容易寫入的plist
這根本不算什麼大數目,只要做到最簡單的方法就可以了,此外,如果你所需要的只是平均數,那麼你可以保留一個正在運行的總數,而不是所有的數值。 – pvg