Redis 升級的好處

2018-08-02 14:46 更新

整數(shù)集合的升級策略有兩個好處, 一個是提升整數(shù)集合的靈活性, 另一個是盡可能地節(jié)約內(nèi)存。

提升靈活性

因為 C 語言是靜態(tài)類型語言, 為了避免類型錯誤, 我們通常不會將兩種不同類型的值放在同一個數(shù)據(jù)結(jié)構(gòu)里面。

比如說, 我們一般只使用 int16_t 類型的數(shù)組來保存 int16_t 類型的值, 只使用 int32_t 類型的數(shù)組來保存 int32_t 類型的值, 諸如此類。

但是, 因為整數(shù)集合可以通過自動升級底層數(shù)組來適應(yīng)新元素, 所以我們可以隨意地將 int16_t 、 int32_t 或者 int64_t 類型的整數(shù)添加到集合中, 而不必?fù)?dān)心出現(xiàn)類型錯誤, 這種做法非常靈活。

節(jié)約內(nèi)存

當(dāng)然, 要讓一個數(shù)組可以同時保存 int16_t 、 int32_t 、 int64_t 三種類型的值, 最簡單的做法就是直接使用 int64_t 類型的數(shù)組作為整數(shù)集合的底層實現(xiàn)。 不過這樣一來, 即使添加到整數(shù)集合里面的都是 int16_t 類型或者 int32_t 類型的值, 數(shù)組都需要使用 int64_t 類型的空間去保存它們, 從而出現(xiàn)浪費內(nèi)存的情況。

而整數(shù)集合現(xiàn)在的做法既可以讓集合能同時保存三種不同類型的值, 又可以確保升級操作只會在有需要的時候進行, 這可以盡量節(jié)省內(nèi)存。

比如說, 如果我們一直只向整數(shù)集合添加 int16_t 類型的值, 那么整數(shù)集合的底層實現(xiàn)就會一直是 int16_t 類型的數(shù)組, 只有在我們要將int32_t 類型或者 int64_t 類型的值添加到集合時, 程序才會對數(shù)組進行升級。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號