0
我有一個永無止境的數據流進入我正在寫的程序。我想擁有一個固定大小的緩衝區陣列,它只存儲該流的最新觀察數據。但是,對我而言,如何以有效的方式實現這一點並不明顯。有沒有一種有效的方法來將最新的連續流部分存儲在數組中?
什麼到目前爲止,我所做的是第一分配長度牛逼的緩衝區,並放置在連續順序進入觀察從頂部到達時:data_0->index 0, data_1->index 1…data_T->index T.
,直到緩衝區已滿,工作正常。但是,當觀察data_T+1
到達時,將被從緩衝器取出索引0需求和需要所有T-1行中的陣列/矩陣被向上移動一個步驟,以最新的數據點放在索引T。
這似乎是一個非常低效的方法,當緩衝區很大並且需要將數十萬個元素一直推到一排時。 這通常如何解決?
我看了一下這個鏈接,但是我不知道java,所以我對此不太瞭解。我主要用Python,C和Matlab編寫代碼。但是不管語言如何,我都在尋求一個概念上的解決方案,這個問題很容易以任何語言以類似的方式實現。 – Petahanks
確定如此使用[環形緩衝](https://stackoverflow.com/questions/215557/how-do-i-implement-a-circular-list-ring-buffer-in-c) –
嗯,所以基本上開始重寫從頂部緩衝區填充到底部?這也是我的第一個初步想法,但我駁斥了它,因爲我懷疑,如果緩衝區沒有按照數據到達的方式排序,那麼跟蹤索引會太麻煩。有沒有一種方法可以保留數據的連續順序?所以緩衝區總是從最老的 - >最新的或最新的 - >最老的? – Petahanks