1. 程式人生 > >json與protobuf的速度之爭

json與protobuf的速度之爭

json是這些年慢慢興起的輕量級資料交換格式。比起老大哥XML。因其更快的解析速度和更小的體積,可謂是用過的都說好。一般情況下json足夠滿足你的大多數需求,但是在計算機領域,沒有最快,只有更快。

當你的傳輸資料大到一定程度的時候,json的速度也不能滿足你需求的時候,你就需要更快的protobuf。

protocolbuffer(以下簡稱PB)是google 的一種資料交換的格式,它獨立於語言,獨立於平臺。(百度百科)。

因為其使用二進位制儲存,所以會比json更快。但是缺點也是顯而易見,二進位制儲存易讀性很差。

我曾遇到要解析40M json的需求。在PC端,使用litjson需要解析10秒鐘。但是將相同的內容通過protobuf再匯出成bytes。只要17M。縮小了2.5倍左右。但是讀取速度只要0.8秒,還包括了資料解析後的處理。

0.1秒和0.008秒可能給人差別不大,但是10秒和0.8秒的差別真的是天壤地別。

如果需要傳輸的資料量比較大時,protobuf是你的不二選擇。

如何使用呢?

我們在unity中只需要使用 protobuf-net 這個dll就行了,下面是其在GitHub上的連結。如何使用他連結內已經非常的清楚了,我在這不重複說了。

其中的坑:

1.將類匯出成protobuf或者是從protobuf匯入到類時,基類的屬性是無法匯入的。所以說使用protobuf的模型類最好還是不要相互繼承。這點需要注意。

2.unity在pc端讀取2進位制檔案的檔案是沒有要求的。.bat.bin都可以用C# 的IO類來讀取。但是在安卓端因為沒法使用IO。如果通過resourecs.load來讀取的話,2進位制檔案的字尾需要是.bytes。

--------------------- 本文來自 小辣椒醬 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/qq_15386973/article/details/78124053?utm_source=copy

相關推薦

jsonprotobuf速度

json是這些年慢慢興起的輕量級資料交換格式。比起老大哥XML。因其更快的解析速度和更小的體積,可謂是用過的都說好。一般情況下json足夠滿足你的大多數需求,但是在計算機領域,沒有最快,只有更快。 當你的傳輸資料大到一定程度的時候,json的速度也不能滿足你需求的時候,你就

倫理困境:人工智慧浪潮“AI威脅論”

首先,何為倫理? 2018年1月份的《科學與社會》報刊中有如下闡述: 倫理一詞,英文為ethics,一詞源自於希臘文的“ethos”,其意義與拉丁文“mores”差不多,表示風俗、習慣的意思。西方的倫理學發展流派紛呈,比較經典的有叔本華的唯意志主義倫理流派、詹姆斯的實用主義倫理學

菜鳥順豐,預示著第三方雲服務商的機會?

昨天是六一兒童節,一早開始從朋友圈到各類媒體齊刷刷的全是懷舊、晒娃、裝嫩,突然從下午14:32分,菜鳥網路在其官方微博釋出了一篇文章《菜鳥關於順豐暫停物流資料介面的宣告》後,整個科技媒體的畫風突變,菜鳥網路和順豐搶走了小朋友們的熱點: 這事到底是在鬧啥呢?幾句話簡單概括下: 1、菜鳥網路要順豐資料

c++ jsonprotobuf 轉換

/* * data: 2018-04-14 * author: cc509a * email: * protocol buffer and json convert each other * support array ,enum */ #i

併發模式 RPS 模式,效能壓測領域的星球大戰

本文是《如何做好效能壓測》系列專題分享的第四期,該專題將從效能壓測的設計、實現、執行、監控、問題定位和分析、應用場景等多個緯度對效

go語言JSONmd5值

變量 數據交互 student val 解析 hash 消息 Go語言 json go語言之JSON與md5值 一、Json是什麽? 是一種輕量級的數據交換語言,用於數據交換。Json由於比XML更小、更快、更易解析,以及瀏覽器的內建快速解析支持,使得其更實用於網絡數據交

軟硬體功能劃分和RISCCISC

下面的內容來自百度百科,我覺得很有用,也回答了我的一些疑問,就記下來了。 軟硬體的功能劃分 在CISC中,為了支援目標程式的優化,支援高階語言和編譯程式,增加了許多複雜的指令,用一條指令來替代一串指令。這些複雜指令簡化目標程式,縮小了高階語言與機器指令之間的語義差距。但是,增加了這些複雜指令

Java 理論實踐: 閉包

  Java 語言是否應增加閉包以及如何新增? 提起向 Java™ 語言增加新的特性,每個人都有自己的一兩個想法。隨著 Java 平臺的原始碼日漸開放,而使用其他語言(例如 JavaScript 和 Ruby)作為伺服器端應用程式日趨流行,因此關於 Java 語言未來的爭論空前激

逃離x86架構-----CPU體系結構CISCRISC

                轉載:http://hi.baidu.com/zaoyuan1217/blog/item/59015b11e8385d165baf534e.htmlx86架構誕生 Intel 8086是一個由Intel於1978年所設計的16位微處理器晶片,是x86架構的鼻祖。不久,Intel

資料提取JSONJsonPATH

import json json模組提供了四個功能:dumps、dump、loads、load,用於字串 和 python資料型別間進行轉換。 1 . json.loads() 把json格式字串解碼轉換成Python物件 從json到python的型別轉換

一山不容二虎,解讀OracleAWS的雲資料庫市場

譯者介紹:劉浩健,一枚年輕的Oracle DBA,現任職於上海雲吞資訊科技有限公司,在企業資料庫的運維工作中上下求索,擅長於Oracle的搭建、故障處理和效能調優。 本文由 譯者劉浩健 翻譯的兩則新聞整理而成。 文章首發轉載自:DBAplus社群 譯文一:《這句話完美概述了為什麼Oracle應該害怕

python入門jsonpickle資料序列化

前提例項:   將一個字典存放在檔案裡 #存入資料info = {   'name':'chy',   'age':18 } f = open("test.txt","w") f.write(str(info)) f.close()   #讀取資料f = open("test

深入解析:由SQL解析失敗看開發DBA的效能

編者注:在很多生產系統中,程式設計師經意不經意寫下的一條SQL都可能帶來效能上的巨大隱患,正確的、不正確的。而DBA就要不斷在這些問題中出生入死,本案例描述的那些不正確的SQL可能給我們帶來的麻煩,而這類錯誤SQL往往為大家所忽視。這樣的問題在最近的客戶案例中不斷湧現,在12c中同樣為我們帶來麻煩,

微信民生銀行影射出第三方支付“困苦”!

銀行的主要業務是負債業務和資產業務,而第三方支付機構主要是負責輔助銀行實現資金轉移支付,也就是結算業務、支付業務、轉賬業務以及銀行卡收單業務等,這就像是動脈和毛細血管的關係一樣。但是,隨著時間推移,銀行與第三方支付機構之間的利益衝突和客戶群爭奪等問題越來越嚴重,如何在競合關係中尋找一個平衡點

AndroidIOS的霸主,早已預示了Dapp江湖格局的風雲變動

本文由公眾號DappVision原創首發,轉載請聯絡授權 最近以太坊風波不斷,昔日“鏈中大哥”的地位似乎搖搖欲墜。值得一提的是,大量的開發者和Dapp數量成就了以太坊,這與App時代的發展模式如出一轍。同樣,公鏈之爭也如同當初Android與IOS的霸王之爭。 過

WapNet!!

文章比較長,請耐心慢慢看。。。謝謝再次申明:寫此貼的目的不是為了說wap或是Net哪個好哪個不好!或者其他的目的。                     寫這個帖子的只是希望能讓那些不明白為什麼很多軟體不支援wap的同學明白並                    不是開發者不想軟體支援wap,而是受到wa

金山WPS微軟Office的20年

“金山真可笑,竟然將它的WPS與微軟的Office 相提並論,還說自己技術比對方更先進。 微軟Office進入中國都十幾年了,WPS才幾年啊!” “你真是黃口小兒,無知無畏。WPS都有20年曆史了,當年WPS曾一統國內辦公自動化市場,而微軟不過是個後來者。” 以上“對話”是記者近日在網上看到的關於金山WPS

Golang 奇葩的時間包Jsonstruct物件之間互相轉換,JsonDate和JsonTime自定義型別如何實現json編碼和解碼(二)

本篇在專案中實用性極強,推薦珍藏 package main import (     "encoding/json"     "fmt"     "time" ) type JsonDate time.Time type JsonTime time.Time func (

多程序單執行緒模型單程序多執行緒模型

伺服器,事件 多程序單執行緒模型典型代表:nginx 單程序多執行緒模型典型代表:memcached 另外redis, mongodb也可以說是走的“多程序單執行緒模”模型(叢集),只不過作為資料庫伺服器,需要進行防寫,只提供了讀同步。 原因很簡單,因為伺服器的發展大部分都

夫唯不,故天下莫能

概述 程序是資源分配的基本單位,程序由執行緒組成。 執行緒是系統執行排程的基本單位,執行緒隸屬於程序。 為何引入執行緒 1、程序在同一時間只能幹一件事,比如我們在上課的時候,往往要耳朵聽課,手記筆記,腦子思考,如果套用程序的機制,那麼我們聽課的時候也不能記錄筆記,更不能思