1樓:肖進
正常情況下效能問題應該和 Protobuf 沒有關係,任務排程與業務邏輯才是重點。
而 Marshal 不僅不通用還會帶來大量多餘的工作,為了這點效能真心不值得。
樓主可以試試 二進位制資料序列化 - C# 高效能自動化服務端框架 - 凹凸架構,或者 TCP 介面服務框架 - C# 高效能自動化服務端框架 - 凹凸架構。
2樓:胡啟航
網路傳輸都涉及到序列化,題主的解決方案也是採用 Marshal類序列成比 protobuf效率更高二進位制格式傳輸,實際上不是省略序列化,而是提高網路傳輸序列資料的encode/decode效率,但這種方式依賴語言和編碼實現,失去了通用協議的規範性、跨平台性、擴充套件性、相容性。
為提高encode/decode效率,實際上谷歌也發布了效率高得多的FlatBuffers協議,適用於高效能和遊戲開發,效能據其測試報告,比 protobuf提高了幾個數量級,10倍100倍以上,見:FlatBuffers: Benchmarks。
另外,還有 Cap』n Proto ,據稱將encode/decode消耗降到近乎0,見:Cap'n Proto: Introduction
目前正考慮平台架構傳輸協議選型,就此拋磚引玉,看看大家有什麼好的意見。
3樓:shuhari
Marshal.StructureToPtr / PtrToStructure 就是做這個事情的。
不過我對這個問題抱有疑問,因為以我的經驗,即使是SOAP這麼重量級的協議,序列化開銷通常也遠小於網路傳輸的開銷,不應該成為系統的瓶頸。如果 protobuf 都不能滿足你的要求,難道你的系統負荷比谷歌還高麼?
如何深入學習 TCP IP 協議,以及網路層 傳輸層 應用層各協議?
Life Bp 對任何事情的學習,如果你找到正確的方法 tz在知乎提這個問題就是在尋找最佳方法 並循序漸進的進行學習,並堅持下來,沒有什麼做不到的。我說下怎麼循序漸進的進行學習,我也是網路初學者,結合自己情況說下吧!1,首先tz對網路原理有個overview 要求 了解術語,有什麼協議,協議之間有什...
網路心理諮詢存在哪些潛在風險,如何規避?
已登出 乙個最大的問題 移情不夠強烈甚至微弱,我有一段時間一直做網路諮詢,一部分來訪者跟我反饋對我沒有很強烈的移情,原因都是 我看不到你 張海音不是也說過嗎?沒有真實的影像作為鏡映,移情會微弱很多 1,沒什麼卵用,人都看不到,什麼反應,移情,共情,簡直就是空中樓閣,誰知道對面是不是來玩你的!又有誰知...
C 中如何通過反射序列化泛型field?
題主沒有說清楚自己用反射序列化字典的應用場景啊,看題主的esle if我猜你是想傳入乙個object然後通過判斷object的型別來自動序列化? 趙劼 操作具體型別Dictionary的話,那麼直接用IDictionary介面就行。我這裡假設你要操作IDictionary。總而言之就是 物件導向學了...