0
而不是製作一個內存池系統,我不能只在應用程序的開始爲每個對象分配巨大的數組,只是使用它們,而在極端情況下,某些對象確實需要比它的數組多的實例,數組將只是尺寸增加一倍或四倍,所以它不會再次達到最大尺寸。我需要的速度超過記憶,所以我認爲這是一個公平的交易?我可以只使用固定數組而不是內存池嗎?
而不是製作一個內存池系統,我不能只在應用程序的開始爲每個對象分配巨大的數組,只是使用它們,而在極端情況下,某些對象確實需要比它的數組多的實例,數組將只是尺寸增加一倍或四倍,所以它不會再次達到最大尺寸。我需要的速度超過記憶,所以我認爲這是一個公平的交易?我可以只使用固定數組而不是內存池嗎?
您所描述的內存池和內存池之間的唯一區別在於,池分配器在內存不足時會分配新池,如果它耗盡,您將重新分配整個陣列。這會導致最壞情況運行時大大增加,並且您需要一個方案來避免在重新分配時使指針和引用無效,這可能會降低整個程序的性能。
池分配器中最糟糕的情況是空間用完時,必須分配一個新數組。在你的分配器中最糟糕的情況是,它耗盡了,必須分配一個新的更大的數組,並將所有舊對象複製到新數組中。顯然後者將花費更多時間。
與內存池有什麼不同? – Pubby
這就是通常實現內存池的方式。 –
這會更快嗎?聽起來好像比較慢,因爲你需要創建多達兩倍的對象,創建對象需要時間。 –