成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

嵌入式算法之大數(shù)據(jù)變長存儲算法

大數(shù)據(jù) 存儲軟件 算法
對于高精度采樣結(jié)果,其數(shù)值最大可能需要3字節(jié),最少1字節(jié),采用標準C的基礎(chǔ)數(shù)據(jù)類型,U16太小無法滿足需求,U32則浪費內(nèi)存。當樣本量很大時,其占用的空間問題便突顯出來。能否采用變長數(shù)據(jù)類型存儲呢?

 1、應(yīng)用場景

對于高精度采樣結(jié)果,其數(shù)值最大可能需要3字節(jié),最少1字節(jié),采用標準C的基礎(chǔ)數(shù)據(jù)類型,U16太小無法滿足需求,U32則浪費內(nèi)存。當樣本量很大時,其占用的空間問題便突顯出來。能否采用變長數(shù)據(jù)類型存儲呢?對小數(shù)據(jù)采用U8,大數(shù)據(jù)采用U32,隨著數(shù)值大小動態(tài)分配存儲空間,就是本文的討論的重點。

2、數(shù)據(jù)去冗余

U32的空間其數(shù)值范圍最大接近2^32,該值非常大,實際數(shù)值范圍遠小于它,高位必然為0。例如U32表示1使用0x00000001,前面位都是0,其表達的數(shù)值和U8的0x01是一樣的,前面重復(fù)的一串0屬于冗余數(shù)據(jù)區(qū),是可以剔除的。

假設(shè)5個數(shù)據(jù)D0..4,原本每個數(shù)據(jù)固定為U32類型,將其高位冗余0去掉,再拼接到U8的一維數(shù)組,則占用的空間和大大縮小。思路的核心是把 U32 或者U64 數(shù)組裁剪后拼接成U8 數(shù)組,同時確保使用時可

根據(jù)U8 數(shù)組中存儲的信息將對應(yīng)的數(shù)值還原。

假設(shè)有0x00000001、0x00000101、0x00000001三個數(shù)據(jù),其有效部分是0x01、0x0101、0x01,如果直接拼接在一起,則沒法區(qū)分0x01010101的含義。因此數(shù)據(jù)在去掉高位0之后,還需進行編碼標記,便于后續(xù)解析還原。

3、數(shù)據(jù)編碼

數(shù)據(jù)編碼的主要作用是標記當前數(shù)據(jù)占用多少連續(xù)字節(jié),有兩種方案:

1、固定位來定義字節(jié)長度(2位可以表示4字節(jié))

一字節(jié):00******

二字節(jié):01******,00******

三字節(jié):10******,01******,00******

四字節(jié):11******,10******,01******,00******

五字節(jié):使用2位不支持

每個字節(jié)的最高2位表示屬于原始數(shù)據(jù)的第幾個(從0開始),前面舉例的3個字節(jié)可以表示為:

0x01 編碼后二進制為 00-000001,最高2位為0,表示當前是編碼后的數(shù)據(jù)的最后一個字節(jié);

0x0101 編碼后二進制為 01-000001--00-000001 解析時取每個字節(jié)的2位判斷,若為00則表示一個編碼數(shù)值結(jié)束。

因為前面2位固定用于標記字節(jié)數(shù),每個字節(jié)實際可用范圍只有6位,如果原數(shù)據(jù)位1000 0001,則最高兩位的10需要再占用一個字節(jié)表示,最終編碼為 01-000010--00-000001。

這種編碼方式,所有字節(jié)有效位是固定的,編解碼實現(xiàn)容易。缺點是4字節(jié)只有24位有效數(shù)據(jù),假如原數(shù)據(jù)最大到25位,則每個字節(jié)分配3位來表示,不過這種大數(shù)據(jù)一般嵌入式很少使用。

2、字節(jié)最高位表示還有剩余數(shù)據(jù),借鑒UTF8的編碼方式

一字節(jié):0*******

兩字節(jié):110*****,10******

三字節(jié):1110****,10******,10******

四字節(jié):11110***,10******,10******,10******

五字節(jié):111110**,10******,10******,10******,10******

六字節(jié):1111110*,10******,10******,10******,10******,10******

七字節(jié):不支持

這種編碼方式,最高字節(jié)的有效位是變化的,其它字節(jié)有效位是6位。

兩種編碼方式的選取,主要是依據(jù)原始數(shù)據(jù)分布概率,如果原數(shù)據(jù)范圍在24位內(nèi),則前面固定位的方式占優(yōu),超過32位內(nèi)則動態(tài)的合適,如果數(shù)據(jù)范圍在16位內(nèi)則沒必要如此折騰。

關(guān)于源碼或者更多交流,請關(guān)注微信公眾號 嵌入式系統(tǒng)。

4、數(shù)據(jù)訪問

原數(shù)據(jù)每個值占用固定字節(jié)長度,可以方便的使用數(shù)組下標遍歷,即地址偏移為(單個數(shù)字占用的字節(jié)數(shù))*(第幾個),編碼為變長數(shù)據(jù)后,要想取到某個原數(shù)據(jù)編碼后的值,如果從數(shù)組頭開始遍歷效率是相當?shù)偷模袥]有更好的辦法呢?

將前面一維數(shù)組轉(zhuǎn)為二維數(shù)組,每行數(shù)組按前面的編碼實現(xiàn),數(shù)據(jù)中預(yù)留4個字節(jié),每行占滿時尾部標記當前行結(jié)束累計包括多少個原始數(shù)據(jù),下個編碼值則存入下一行,依次類推。

圖片如上圖,二維數(shù)組的一行就退化為一維數(shù)組,每行在固定位置標記存儲的數(shù)量。如果需要查找C10,先按標記數(shù)目的字節(jié)地址遍歷,則可以找到第2行(從0開始)為13,表示需要查找的數(shù)據(jù)在本行,只需要遍歷該行,從C9開始往后查詢。

5、總結(jié)

選擇合適的數(shù)據(jù)類型的減小存儲空間,對大范圍的數(shù)據(jù)使用變長的類型拼接存儲,犧牲了部分時間,但節(jié)約了ram或flash空間,對資源緊缺的嵌入式設(shè)備具有一定的價值。

本文轉(zhuǎn)載自微信公眾號「嵌入式系統(tǒng)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系嵌入式系統(tǒng)公眾號。

 

責任編輯:武曉燕 來源: 嵌入式系統(tǒng)
相關(guān)推薦

2021-11-05 22:47:44

冒泡排序選擇插入

2020-11-04 10:20:56

嵌入式算法CRC

2022-03-10 08:59:59

傅里葉變換算法系統(tǒng)

2023-03-26 12:41:46

2020-11-03 09:55:33

嵌入式算法夾角

2020-11-20 14:15:23

大數(shù)據(jù)數(shù)據(jù)存儲

2013-07-25 09:32:26

OpenGL ESAndroid4.3

2015-04-13 10:21:39

大數(shù)據(jù)大數(shù)據(jù)前景

2017-05-24 17:05:53

西部數(shù)據(jù)

2011-01-14 13:13:23

嵌入式Linux開發(fā)

2011-03-07 09:57:24

Perst嵌入式數(shù)據(jù)庫

2017-06-21 08:14:19

大數(shù)據(jù)算法困境

2010-01-15 09:44:52

嵌入式存儲交換技術(shù)

2009-04-20 21:20:32

Linux文件系統(tǒng)存儲機制

2011-03-11 11:19:05

嵌入式數(shù)據(jù)庫

2009-07-17 16:06:59

ARM嵌入式開發(fā)

2009-12-09 10:12:28

嵌入式Linux

2009-12-16 15:41:40

嵌入式Linux入門

2009-12-17 10:33:05

嵌入式Linux

2011-04-18 11:34:34

嵌入式軟件測試
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 免费福利视频一区二区三区 | 国产成人在线视频免费观看 | 91久久久久 | 中文字幕在线观看视频网站 | 久久久久www | 国产一区二区三区久久久久久久久 | 国产成人高清在线观看 | 日本精品免费在线观看 | 亚洲一区在线日韩在线深爱 | 伊人久操| www国产成人免费观看视频,深夜成人网 | 亚洲欧美激情视频 | 成人久草 | 夜夜夜夜夜夜曰天天天 | 在线国产一区二区 | 国产片侵犯亲女视频播放 | 韩日一区 | 国产一区二区精品在线观看 | 国产精品日韩一区二区 | 日本精品视频 | 国产美女福利在线观看 | 免费精品 | 中文字幕一区二区三区四区五区 | 亚洲精品一区二区三区蜜桃久 | 精品视频在线观看 | 精品国产一区二区三区性色av | 亚洲一区免费视频 | 99精品观看 | 99久久精品免费看国产免费软件 | 金莲网 | 欧美日韩国产一区二区三区 | 免费在线观看一级毛片 | 97伦理| 夜夜爽99久久国产综合精品女不卡 | av中文字幕在线观看 | 91.色 | 亚洲最大的黄色网址 | 日韩在线观看一区二区三区 | 欧美激情视频一区二区三区在线播放 | 国产美女精品视频免费观看 | 久久精品国产免费 |