Redis 升級(jí)的好處

2018-08-02 14:46 更新

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

提升靈活性

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

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

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

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)