在mac上配置CMake,並編譯FlatBuffers

公司項目原本基礎架構是用json格式來傳遞數據,但是這個東西有個挺嚴重的問題,就是需要解析,然後項目本身與服務器需要進行大量的通訊(頻率很高,大概30hz吧),這個解析就非常的拖性能了,而且當前的json庫,好像每次都得new對象,產生gc,然後就發現了FlatBuffers這麼個玩意。
它是google員工在業餘開發的一個玩意,具體去百度就好了。
它的特點呢,就是雖然數據也是2進制傳輸的,但是它編碼過的數據,與原始數據在內存中的佔用區別不大,且達到另一端以後,並不需要複雜的格式轉換和解析,這就非常的適合高頻率通訊的架構來使用了,不過代碼裏的用法有些噁心,不知道是編碼質量不高,還是因爲就寫不成太優雅的格式的原因了。
然後這都不是重點,重點是要想使用這個東西,它的協議,需要用它自己提供的編譯庫來生成,然後這個東西在github上有windows的Release版,但是沒有mac,但是服務器同事用的是mac呀,所以我們還需要自己編譯一個mac的出來。
這裏要吐槽一下,以前github上有現成生成好的Xcode工程,mmp一鍵就搞定了,結果現在變成了只有CMake的實現了,不是說CMake不好(它可以編譯各個平臺的),但是畢竟我不熟練呀,然後就說下要怎麼搞。

首先去github把FlatBuffers的工程下下來,地址:
https://github.com/google/flatbuffers
然後下載CMake,地址:
https://cmake.org/download/

mac安裝十分簡單,就是個app,裝完長這樣。
這裏寫圖片描述

這時其實已經可以使用它了,如果你想在命令行也能使用CMake的命令的話,這裏可以這樣操作
這裏寫圖片描述
這裏寫圖片描述
選擇 How to install….,直接按着第二步來,就可以在app沒開的情況下使用CMake命令了。
當然命令行不是今天的主角,cmake出的這個app真的是非常的好用了,對於我這種不背命令的人來說簡直是福音。

這裏寫圖片描述
具體操作非常的智能,我們選擇Browse Source…設置工程的位置,FlatBuffers裏有一個CMakeLists.txt文件,app可以通過它來知道怎樣去構建相應的工程。
Browse Build….來設置編譯的輸出位置。
點擊Configure,在彈出的窗口裏把目標項目設爲Xcode,然後我們就發現右下角的Current Generator變成了Xcode。
然後見證奇蹟的時刻到了,直接點擊Generate對應的Xcode工程就生成出來了,跟以前比簡直是太簡單了!!!以前cocos2d用cmake時,配來配去的煩死了。

這裏寫圖片描述
我們看到生成目錄下就出現了一個.xcodeproj的工程文件,直接啓動它。
這裏寫圖片描述
然後我們選擇Build
這裏寫圖片描述
可以在Debug目錄下找到flatc文件了,這個就是我們需要的協議生成庫了,
大功告成!

總的來說,cmake的這個app是給我驚喜最多的,人在學習,工具也在進步,學無止境呀。
向苦於解決服務器json數據解析的同學推薦一下FlatBuffers這個協議,不用解析這個特性真是個天才的想法。
但是它在包體尺寸,內存佔用上就不是那麼具備優勢了。
對比json, FlatBuffers, protobuffer(google自己出的一種協議)。
json在調試上有優勢(因爲是明文傳遞)
protobuffer更加的中庸,內存更小,包更小,但是仍然需要解析
FlatBuffers上面幾點都是弱勢,但是它傳遞過來以後不需要解析,直接就可以序列化成類對象,所以特別的適合需要跟服務器進行頻繁通訊的架構,這樣可以有效的提升服務器,客戶端的運行效率,節省有限的計算資源。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章