當前位置:
首頁 > 知識 > 文件的性能分析

文件的性能分析

作者:蔣步星

來源:數據蔣堂

本文共1515字,建議閱讀5分鐘

本文帶大家學習根據文件性能的不同選擇更好的存儲方式。

我們以前講過硬碟的性能特徵,主要是針對硬體層面進行分析的,現在我們來考慮軟體層面的差異。

理論上講,軟體可以穿過操作系統直接進行磁碟扇區的訪問,但實在太過於麻煩而幾乎不會實踐機會,這裡就不考慮了,我們只討論操作系統下的存儲形式,而文件就是其中重要的存儲形式。

文件一般有兩種:文本文件和二進位文件,我們分別來討論。

文本文件

文本是很常見的數據存儲形式,它具有通用性易讀性等優點而被廣泛使用。但是,文本的性能卻非常差!

文本字元不能直接運算,需要轉換成整數、實數、日期、字元串等內存數據類型才可以進一步處理,而文本的解析是個非常複雜的任務。

舉個例子,設想一下把文本「12345"轉成內存二進位整數12345的過程:

1. 先設結果的初始值為0

2. 拆出字元「1」,解析出數值1,將初值0乘以10加上這個1得到數值1

3. 再拆出字元「2」,解析出數值2,把剛才的1乘以10和這個2相加得到數值12

4. 再拆出字元「3」,解析出數值3,把剛才的12再乘以10加上這個3得到數值123

5. ...

有些C程序員知道用函數atoi()可以實現字串到整數的轉換,僅僅一句代碼,看似非常簡單,但其實背後的步驟非常多,CPU要干很多事才能完成這個動作,耗時並不短。實際過程中還要判斷可能出現的非法字元(比如不是數字的字元),比上面描述的步驟還要更複雜得多。

整數還是最簡單的數據類型,如果是實數還要處理小數點,字元串解析時要考慮轉義字元和引號匹配,日期的解析更是要麻煩得多,因為格式種類太多,2018/1/10和10-1-2018都是常見的合法日期格式,甚至還有Jan-10 2018這種,要正確解析,就得嘗試用多種格式去匹配,CPU耗時很嚴重。

一般來講,外存數據訪問的主要時間是在硬碟本身的讀取上,而文本文本的性能瓶頸卻經常發生在CPU環節。因為解析的複雜性,CPU耗時很可能超過硬碟耗時(特別是採用高性能固態硬碟時)。文本是非常慢的,需要高性能處理大數據時不要使用文本!

但是,有些原始數據(如日誌)只有文本形式,解析文本就是不可避免的任務。這時候,一方面可以採用並行技術,利用多CPU並行度更高的特性,由多個線程同時解析文本,這樣即使仍然串列訪問硬碟也能獲得更高的文本處理性能;另一方面,這些數據如果需要反覆使用,那麼最好是轉換成二進位格式存儲,第二次使用不要再次解析。

二進位文件

二進位文件中,我們會將各種數據類型對應的內存位元組直接寫出到文件中,再讀取時也只要直接取出重新裝載成內存數據,沒有複雜的解析過程,也不需要判斷和識別非法情況,這時性能就會好很多。

不過,用二進位數據存儲時需要考慮好壓縮手段,否則在某些極端情況下會比文本的存儲空間更大,雖然解析時間縮短,但硬碟訪問時間會變長。

比如整數1,用文本存儲時只要佔一個位元組,即使加上分隔符也就兩個位元組。而如果要把所有整數都按32位整數處理(當前計算機的整數數據類型大多數是這個位長),就需要用4個位元組來存儲,比文本大了一倍,有時可能還要加上數據類型本身的信息,就會更長。

對於這種情況,合理的做法是根據數的大小決定位長,比如小整數只存儲一個位元組或兩個位元組,大整數才存儲更多的位元組,因為小整數較常見,結果會使得總體存儲空間降低,從而獲得性能優勢。

但是,壓縮率並不是越高越好,解壓縮需要消耗CPU時間。象上面說的,把整數分大小存儲能夠減少空間,但在解析時就要多一重判斷,又降低一點性能。最後採用的壓縮方案,要在硬碟空間的減少和CPU的消耗中取得某種平衡。如果一味地追求壓縮率(比如使用zip壓縮演算法),空間是降低得更多,但CPU時間將會超過硬碟時間,整體性能反而下降。

不過,無論如何,二進位文件仍然是最快的存儲格式。採用簡單壓縮方案的二進位文件,即使同樣採用行式存儲,一般也能達到比文本高4-5倍的性能。使用二進位格式,還有可能使用前面文章中提到過的分段並行技術和列存技術,從而獲得更高的性能。

專欄作者簡介

潤乾軟體創始人、首席科學家

清華大學計算機碩士,著有《非線性報表模型原理》等,1989年,中國首個國際奧林匹克數學競賽團體冠軍成員,個人金牌;2000年,創立潤乾公司;2004年,首次在潤乾報表中提出非線性報表模型,完美解決了中國式複雜報表製表難題,目前該模型已經成為報錶行業的標準;2014年,經過7年開發,潤乾軟體發布不依賴關係代數模型的計算引擎——集算器,有效地提高了複雜結構化大數據計算的開發和運算效率;2015年,潤乾軟體被福布斯中文網站評為「2015福布斯中國非上市潛力企業100強」;2016年,榮獲中國電子信息產業發展研究院評選的「2016年中國軟體和信息服務業十大領軍人物」;2017年, 自主創新研發新一代的數據倉庫、雲資料庫等產品即將面世。

數據蔣堂

《數據蔣堂》的作者蔣步星,從事信息系統建設和數據處理長達20多年的時間。他豐富的工程經驗與深厚的理論功底相互融合、創新思想與傳統觀念的相互碰撞,虛擬與現實的相互交織,產生出了一篇篇的瀝血之作。此連載的內容涉及從數據呈現、採集到加工計算再到存儲以及挖掘等各個方面。大可觀數據世界之遠景、小可看技術疑難之細節。針對數據領域一些技術難點,站在研發人員的角度從淺入深,進行全方位、360度無死角深度剖析;對於一些業內觀點,站在技術人員角度闡述自己的思考和理解。蔣步星還會對大數據的發展,站在業內專家角度給予預測和推斷。靜下心來認真研讀你會發現,《數據蔣堂》的文章,有的會讓用戶避免重複前人走過的彎路,有的會讓攻城獅面對扎心的難題茅塞頓開,有的會為初入行業的讀者提供一把開啟數據世界的鑰匙,有的甚至會讓業內專家大跌眼鏡,產生思想交鋒。

校對:林亦霖

為保證發文質量、樹立口碑,數據派現設立「錯別字基金」,鼓勵讀者積極糾錯

若您在閱讀文章過程中發現任何錯誤,請在文末留言,或到後台反饋,經小編確認後,數據派將向檢舉讀者發8.8元紅包

同一位讀者指出同一篇文章多處錯誤,獎金不變。不同讀者指出同一處錯誤,獎勵第一位讀者。

感謝一直以來您的關注和支持,希望您能夠監督數據派產出更加高質的內容。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 數據派THU 的精彩文章:

手把手教你學習R語言
數據院跨學科交叉人才培養走出國門——中德交換生項目首位社科學子赴德國哥廷根大學交流學習

TAG:數據派THU |