redis_3.0.7_sds.h_sdslen()

源函數

static inline size_t sdslen(const sds s)
{
       struct sdshdr *sh = (void*)(s-(sizeof(struct sdshdr)));
       return sh->len;
}

這是redis中用來計算字符串長度的函數,時間複雜度爲O(1)。具體爲何這麼寫,我也不是很明白。隨着學習的深刻,慢慢就懂了。 主要讓我困惑的就是這一句:redis

struct sdshdr *sh=(void*)(s-(sizeof(struct sdshdr)));
//這一句是什麼意思呢?爲何這麼寫?理由是什麼?
//優點很明顯,時間複雜度只有O(1),很高效。

源函數

static inline size_t sdslen(const sds s)
{
struct sdshdr *sh = (void*)(s-(sizeof(struct sdshdr)));
>return sh->free;

}函數

這是描述當前sds字符串中還剩下的空間量的函數。爲何這麼寫,我也不是很明白。

時間複雜度也是O(1),很高效的寫法啊。學習

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息