序列化性能对比:JSON、Pickle、MessagePack、Avro、Protobuf谁更快?

第一章:Python序列化技术概述

Python序列化是指将内存中的对象转换为可存储或传输的格式(如字节流或字符串),以便在后续能够反序列化恢复原始对象。该技术广泛应用于数据持久化、网络通信、缓存系统和配置管理等场景。

序列化的核心作用

  • 实现对象跨平台、跨语言的数据交换
  • 支持远程过程调用(RPC)和分布式系统的数据传递
  • 便于调试时保存程序运行状态

常见的Python序列化方式

方法格式可读性性能
pickle二进制低高
json文本(JSON)高中
yaml文本(YAML)极高低

使用pickle进行序列化的示例

# 导入pickle模块
import pickle

# 定义一个示例对象
data = {'name': 'Alice', 'age': 30, 'skills': ['Python', 'ML']}

# 序列化对象并写入文件
with open('data.pkl', 'wb') as f:
    pickle.dump(data, f)  # 将对象写入文件

# 反序列化恢复对象
with open('data.pkl', 'rb') as f:
    loaded_data = pickle.load(f)
    print(loaded_data)  # 输出: {'name': 'Alice', 'age': 30, 'skills': ['Python', 'ML']}
上述代码展示了如何使用 pickle 模块将字典对象序列化到文件,并从文件中还原。执行时需注意文件以二进制模式(wb/rb)打开,否则会引发类型错误。

安全注意事项

使用 pickle 反序列化不可信数据存在执行任意代码的风险,因此应避免在开放系统中使用。相比之下,json 更安全且兼容性强,但不支持自定义类实例的直接序列化。

第二章:主流序列化格式原理剖析

2.1 JSON序列化机制与语言互操作性

JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其结构清晰、易于解析,广泛应用于跨语言系统间的数据传输。其核心优势在于语言无关性,使得不同技术栈的系统能基于统一格式实现高效通信。
序列化过程解析
在序列化过程中,对象被转换为JSON字符串。以Go语言为例:

type User struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
}
user := User{ID: 1, Name: "Alice"}
data, _ := json.Marshal(user)
// 输出:{"id":1,"name":"Alice"}
上述代码中,json:标签定义了字段的序列化名称,确保结构体字段与JSON键名映射。json.Marshal函数递归遍历对象,将其转化为字节流。
跨语言兼容性保障
主流编程语言均内置JSON支持,如Python的json.dumps、Java的Jackson库,保证了数据在服务间无缝流转。这种标准化机制显著提升了微服务架构下的互操作性。

2.2 Pickle的Python原生对象持久化原理

Pickle 是 Python 标准库中用于序列化与反序列化对象的核心模块,它能将任意复杂的 Python 对象转换为字节流,实现对象的状态持久化。
序列化过程解析
当调用 pickle.dump(obj, file) 时,Pickle 遍历对象的属性和引用,递归生成字节码指令。例如:
import pickle

data = {'name': 'Alice', 'age': 30}
with open('data.pkl', 'wb') as f:
    pickle.dump(data, f)
该代码将字典对象序列化至文件。Pickle 保留类型信息、引用关系及嵌套结构,支持自定义类实例。
反序列化与执行机制
使用 pickle.load(file) 可重建原始对象。Pickle 虚拟机按指令流还原对象图,确保结构一致性。
  • 支持几乎所有内置数据类型
  • 可处理循环引用
  • 依赖 __reduce__ 方法定制序列化行为

2.3 MessagePack的二进制压缩与高效编码

MessagePack 是一种高效的二进制序列化格式,通过紧凑的编码规则显著减少数据体积。相比 JSON 等文本格式,它在传输和存储中具备更优的空间利用率。
编码机制对比
  • 整数根据值大小自动选择最短编码字节
  • 字符串前缀携带长度信息,无需转义
  • 数组和映射直接编码元素数量,提升解析速度
示例:Go 中的序列化

package main

import (
    "github.com/vmihailenco/msgpack/v5"
    "log"
)

type User struct {
    ID   int    `msgpack:"id"`
    Name string `msgpack:"name"`
}

func main() {
    user := User{ID: 1, Name: "Alice"}
    data, _ := msgpack.Marshal(&user)
    log.Printf("Encoded bytes: %v", data)
}
上述代码将结构体序列化为二进制流。`msgpack:""` 标签定义字段名映射,`Marshal` 函数执行紧凑编码,输出字节数组远小于等效 JSON。
性能优势
格式大小 (Bytes)解析速度 (ns/op)
JSON321200
MessagePack22800
在典型场景下,MessagePack 缩小体积约 30%,并加快反序列化过程。

2.4 Avro的模式驱动数据序列化设计

Avro 采用模式(Schema)优先的设计理念,确保数据在序列化与反序列化过程中具备结构一致性。其核心优势在于将模式与数据分离,提升跨平台兼容性。
模式定义示例
{
  "type": "record",
  "name": "User",
  "fields": [
    {"name": "id", "type": "int"},
    {"name": "name", "type": "string"}
  ]
}
该 Schema 定义了一个名为 User 的记录类型,包含 id 和 name 字段。序列化时,Avro 使用此模式将数据编码为紧凑的二进制格式,确保类型安全。
序列化特性对比
特性AvroJSON
类型支持强类型弱类型
体积效率高低
模式依赖必需无
Avro 的模式驱动机制特别适用于大数据生态中的数据管道,如 Kafka 与 Hadoop 集成场景,保障数据语义一致。

2.5 Protobuf的强类型IDL与紧凑编码优势

Protobuf通过定义强类型的接口描述语言(IDL),确保服务间通信的数据结构严格一致。开发者在`.proto`文件中明确声明消息字段及其类型,编译后生成目标语言的类,避免运行时类型错误。
IDL定义示例
syntax = "proto3";
message User {
  string name = 1;
  int32 age = 2;
  bool active = 3;
}
该定义生成跨语言的数据模型,字段编号用于序列化顺序,保障向后兼容性。
编码效率对比
格式字节大小可读性
JSON87 B高
Protobuf35 B低
Protobuf采用二进制紧凑编码,省去冗余符号,显著降低网络传输开销,适合高性能微服务通信场景。

第三章:性能测试环境与方法论

3.1 测试工具搭建与基准测试框架选择

在构建高性能系统测试环境时,选择合适的基准测试框架是关键第一步。Go语言生态中,go test内置的Benchmark功能提供了轻量级、高精度的性能测量能力,适合微服务组件的压测场景。
基准测试代码示例

func BenchmarkDataProcessor(b *testing.B) {
    processor := NewDataProcessor()
    data := generateTestPayload(1024)
    
    b.ResetTimer()
    for i := 0; i < b.N; i++ {
        processor.Process(data)
    }
}
上述代码通过b.N自动调整迭代次数,ResetTimer确保初始化开销不计入测量结果,保障测试准确性。
主流框架对比
框架语言支持并发模型适用场景
Go BenchmarkGoGoroutine单元级性能测试
JMeterJava/HTTP线程池全链路压测
k6JavaScript协程云原生API负载测试

3.2 数据样本设计:覆盖典型应用场景

为确保模型训练的泛化能力,数据样本需覆盖系统在实际部署中的典型使用场景。应优先采集高频操作、边界条件及异常流程的数据,以提升模型鲁棒性。
关键场景分类
  • 正常业务流:用户完成注册、登录、下单等标准操作
  • 异常输入:提交空字段、非法字符或超长字符串
  • 高并发模拟:多用户同时访问关键接口
样本结构示例
场景类型字段数量样本量标注说明
登录成功85000含正常凭证与IP信息
密码错误82000连续3次失败记录
{
  "event_type": "login_attempt",
  "user_agent": "Mozilla/5.0",     // 客户端环境标识
  "ip_location": "Beijing",
  "success": false,
  "retry_count": 3                // 触发风控的关键特征
}
该日志结构体现真实攻击模式,用于训练异常检测模型识别暴力破解行为。

3.3 指标定义:序列化/反序列化耗时与体积对比

在性能敏感的分布式系统中,序列化效率直接影响数据传输与处理延迟。评估不同序列化协议时,核心指标包括序列化后数据体积和操作耗时。
常见序列化格式对比
格式体积(KB)序列化耗时(μs)反序列化耗时(μs)
JSON1508592
Protobuf453038
MessagePack523641
Protobuf 序列化示例
message User {
  string name = 1;
  int32 age = 2;
}
// 编码过程
data, _ := proto.Marshal(&User{Name: "Alice", Age: 30})
上述代码将结构体编码为二进制流。`proto.Marshal` 执行高效紧凑的编码,其字段编号机制减少冗余标签,显著降低体积与解析开销。相比文本格式如 JSON,二进制编码避免了字符解析,提升 2 倍以上吞吐能力。

第四章:实测结果分析与场景建议

4.1 各格式在不同数据规模下的性能表现

在处理多样化数据规模时,不同数据格式的读写效率差异显著。JSON 适合小规模配置数据,但在大数据集下解析开销大;Parquet 和 ORC 等列式存储则在大规模分析场景中表现出色。
常见格式性能对比
  • JSON:可读性强,适用于小数据量(<10MB)
  • CSV:轻量级,适合中等规模结构化数据(10MB~1GB)
  • Parquet:压缩率高,查询快,适用于海量数据分析(>1GB)
读取性能测试结果
格式数据量平均读取时间(ms)
JSON100MB850
CSV100MB620
Parquet100MB210
# 使用PyArrow读取Parquet文件
import pyarrow.parquet as pq
table = pq.read_table('data.parquet')
df = table.to_pandas()  # 转为Pandas DataFrame
上述代码利用 PyArrow 高效加载 Parquet 文件,其底层采用列式存储和压缩编码,大幅减少I/O开销。

4.2 空间效率对比:序列化后数据大小分析

在微服务通信中,序列化格式直接影响网络传输开销与存储成本。常见的序列化方式如 JSON、Protobuf 和 Avro,在数据体积上表现差异显著。
典型序列化格式对比
  • JSON:可读性强,但冗余信息多,空间占用大;
  • Protobuf:二进制编码,字段编号压缩,体积最小;
  • Avro:依赖 schema,适合大数据批处理场景。
实测数据对比
格式原始数据 (1KB)序列化后大小
JSON1 KB1024 B
Protobuf1 KB320 B
Avro1 KB410 B
message User {
  required int32 id = 1;
  optional string name = 2;
  optional bool active = 3;
}
该 Protobuf 定义通过字段编号和紧凑编码策略,显著减少元数据开销,尤其在嵌套结构中优势更明显。

4.3 跨语言支持与可读性权衡

在构建分布式系统时,跨语言支持成为提升服务互操作性的关键。不同服务可能使用 Go、Python 或 Java 等多种语言开发,因此通信协议需具备语言无关性。
序列化格式的选择
常见方案包括 JSON、XML 和 Protocol Buffers。其中,Protocol Buffers 在效率和跨语言兼容性上表现优异:

syntax = "proto3";
message User {
  string name = 1;
  int32 age = 2;
}
该定义可生成 Go、Java、Python 等多种语言的客户端代码,确保数据结构一致性。字段编号(如 =1)用于二进制编码时的顺序标识,避免版本兼容问题。
可读性与性能的平衡
  • JSON 易于调试,但解析开销大;
  • Protobuf 高效紧凑,但需预定义 schema;
  • gRPC 默认集成 Protobuf,天然支持多语言 RPC 调用。
选择时应根据团队技术栈、调试需求和性能要求综合权衡。

4.4 实际应用中选型策略与最佳实践

在分布式系统架构设计中,消息队列的选型需综合考虑吞吐量、延迟、可靠性及运维成本。对于高吞吐场景如日志收集,Kafka 是理想选择;而对于需要强事务支持的业务系统,RocketMQ 更具优势。
选型评估维度
  • 消息持久性:确保消息不丢失,支持磁盘持久化
  • 削峰能力:应对突发流量,缓冲上游洪峰请求
  • 可扩展性:支持水平扩展以适应业务增长
配置优化示例
// Kafka生产者关键参数调优
props.put("acks", "all");        // 确保所有副本确认
props.put("retries", 3);         // 自动重试次数
props.put("batch.size", 16384);  // 批量发送大小
上述配置通过增强确认机制和批量处理,在保证数据可靠性的同时提升传输效率。参数 acks=all 表示所有ISR副本写入成功才返回,适用于金融级一致性要求场景。

第五章:总结与未来趋势

云原生架构的持续演进
现代企业正加速向云原生转型,Kubernetes 已成为容器编排的事实标准。以下是一个典型的 Helm Chart 部署配置片段,用于在生产环境中部署微服务:
apiVersion: v2
name: user-service
version: 1.2.0
description: A scalable user management microservice
dependencies:
  - name: postgresql
    version: 12.4.0
    condition: postgresql.enabled
该配置支持动态启用数据库依赖,提升部署灵活性。
AI驱动的运维自动化
AIOps 正在重塑系统监控与故障响应机制。通过机器学习模型分析日志流,可实现异常检测准确率提升至92%以上。某金融客户采用 Prometheus + Grafana + Loki 栈,结合自研预测算法,在交易高峰期提前15分钟预警潜在服务降级。
  • 实时日志聚合与结构化解析
  • 基于时序数据的容量预测
  • 自动根因分析(RCA)建议生成
边缘计算与分布式系统的融合
随着IoT设备激增,边缘节点需具备自治能力。下表展示了三种边缘部署模式的性能对比:
部署模式平均延迟(ms)带宽消耗(MB/day)运维复杂度
集中式云端处理180120低
区域边缘集群4565中
本地设备推理128高

架构演进路径:中心云 → 区域边缘 → 终端智能

数据流动方向:终端 → 边缘网关 → 区域数据中心 → 中心云

相关推荐

Message Pack 协议详解及应用

Message Pack使用了一种基于键值对的数据结构,可以表示各种类型的数据,包括整数、浮点数、字符串、数组和字典等。与其他序列化格式相比,Message Pack具有更小的数据体积和更快的序列化和反序列化速度,适用于网络传输和存储等场景。通过将数据序列化为二进制格式,可以方便地在不同的节点之间传递和解析数据,提高系统的可扩展性和性能。总体来说,Message Pack的语法格式简洁而灵活,可以有效地减少数据的大小,并提高数据的传输效率。根据数值的大小,使用不同的标识符表示。

超哥量化的博客 2224

MessagePack简介及使用

什么是MessagePack 官方msgpack官网用一句话总结: It’s like JSON. but fast and small. 简单来讲,它的数据格式与json类似,但是在存储时对数字、多字节字符、数组等都做了很多优化,减少了无用的字符,二进制格式,也保证不用字符化带来额外的存储空间的增加。以下是官网给出的简单示例图: 图上这个json长度为27字节,但是

陈守璐的专栏 1万+

MessagePack序列化格式的全面解析与实践

数据序列化是一种将数据结构或对象状态转换为可存储或传输的格式的过程,常见于网络通信、数据存储和数据交换。它允许复杂的数据结构在不同的系统或语言间以一致的方式进行传输。MessagePack支持多种基本数据类型,包括:整数:支持无符号和有符号整数,以及特定范围的整数。浮点数:支持单精度和双精度浮点数。布尔值:true和false。nil:代表空值。在某些情况下,可能需要对MessagePack进行扩展以支持自定义的数据类型。

weixin_42576467的博客 1435

Protobuf、MessagePack、MemoryPack 序列化协议该如何选择

总的相关数据如下表所示,原始数据可以在文末的Github项目地址获取:从图表来看,如果要兼顾序列化后大小和性能的话我们应该要选择,它序列化以后的结果最小,而且兼顾了性能:不过由于MemoryPack目前需要.NET7版本,所以现阶段最稳妥的选择还是使用Lz4压缩算法,它有着不俗的性能表现和突出的序列化大小。回到文首的技术选型问题,笔者那个项目最终选用的是这个序列化协议和框架,因为当时考虑到需要和其它语言交互,然后也需要有较小空间占用,目前看已经占用了111GB的Redis空间占用。

weixin_41316824的博客 3016

综合能源系统多时间尺度优化调度!诸多创新点让你抓住审稿人的心!

主要介绍综合能源系统的设备组成结构,并针对屋顶光伏系统、冷-热-电联供系统中的燃气轮机、燃气锅炉、光伏溴化锂制冷机、卡琳娜余热发电、中央空调系统,以及外网交互系统的配电网与天然气管网交互关系进行数学建模。1) 源-荷-储协同调度:研究屋顶光伏、燃气轮机、燃气锅炉等源侧设备,中央空调、电-热-冷负荷、可平移电负荷、可削减温控负荷等负荷侧资源,以及储能系统、电动汽车等储能侧设备的协同调度,以提高风光消纳能力,满足社会能源需求。通过电转热、电转冷、电转气等多能耦合方式,可进一步促进可再生能源的应用与发展。

weixin_48747334的博客 1489

ATE自动化测试设备:硬件与软件的完美协同

本文深入解析了ATE自动化测试设备如何通过硬件与软件的完美协同,实现高效、精准的电子产品测试。文章详细阐述了ATE系统的硬件架构(如测试控制器、仪器模块、开关矩阵)与软件层次(如测试管理、仪器控制、数据分析),并结合实战案例,揭示了软硬件协同设计在提升测试效率与可靠性中的关键作用。

weixin_29218509的博客 168

AI Agent断电续跑:基于Redis的Checkpoint机制设计与实现

在分布式系统和AI应用开发中,状态持久化是保障服务可靠性的核心技术。Checkpoint机制通过定期保存运行时状态快照,使系统在意外中断后能从最近一致点恢复,而非从头开始。其技术原理涉及状态序列化、存储后端选型和恢复策略设计,能显著提升长时任务和AI Agent的容错能力与运维效率。Redis凭借其内存级速度、丰富数据结构和持久化特性,成为实现高效Checkpoint存储的热门选择。本文以AI Agent场景为例,深入解析如何基于Redis设计健壮的Checkpoint机制,涵盖状态管理、序列化方案、生产环

weixin_34293141的博客 373

SOPHGO SG2000/SG2002 AI SoC异构架构解析与应用

异构计算架构通过整合不同指令集核心(如RISC-V、Arm和8051)实现性能与功耗的平衡,是现代嵌入式系统和AIoT设备的关键技术。其原理是根据任务特性分配至最适合的计算单元,例如通用计算使用高性能核心,实时任务交由专用核心处理。这种架构在智能视觉、工业检测等场景具有显著优势,能高效处理AI推理、多媒体编解码等任务。SOPHGO SG2000系列SoC采用创新的三核异构设计,集成了0.5-1TOPS的NPU加速器,支持Linux/Android/FreeRTOS多系统并行运行。开发中需注意核心间的IPC通

weixin_30684743的博客 354

3 分钟让普通鼠标好用到离谱:Mac Mouse Fix 侧键映射与平滑滚动完全指南

用鼠标中键想粘贴一段文字,Mac 上毫无反应;网页滚轮一顿一顿地跳,怎么都停不干净。Mac Mouse Fix 就是来解决这类问题的开源工具:给鼠标侧键映射动作、把滚轮改成平滑滚动,还能自定义指针加速,所有配置都留在本地。 ## Mac Mouse Fix 安装步骤:三分钟跑起来 想让它干活,先装好: 1. 用 Homebrew 一行装完:`brew install mac-mouse-fi

gitblog_00109的博客 342

微信Dat文件转图片(文末含工具下载)

PC端微信dat图片转换为jpg格式

weixin_40704848的博客 8087

SHP转TXT、TXT转SHP工具(附工具下载链接)

关于TXT,可以选择整个图层生成一个TXT。也可以勾选“每个地块单独存TXT”,然后选择一个字段,根据字段值,给每个地块生成一个TXT文件。支持选择和数据框一样的坐标系,也可以选择一个图层,工具会采用和这个图层一样的坐标系。1、TXT数据支持输入单个或者多个TXT文件,也可以直接选择TXT所在的文件夹。所有的TXT数据都生成到一个矢量数据图层。关于这一行的内容,可以在地块坐标行设置中进行设置。其他:①面节点闭合:勾选,则回到起点。属性描述:可以直接复制粘贴进来,也可以直接修改。也可以改为任意字母。

坐听风雨 4303

JSON、Protobuf、Thrift、MessagePack 对比和开发指南

主流序列化协议优缺点和网站推荐 JSON 优点 1 简单易用开发成本低2 跨语言3 轻量级数据交换4 非冗长性(对比xml标签简单括号闭环) 缺点 1 体积大,影响高并发2 无版本检查,自己做兼容3 片段的创建和验证过程比一般的XML复杂4 缺乏命名空间导致信息混合 总结:最简单最通用的应用协议,使用广泛,开发效率高,性能相对较低,维护成本较高。 Protobuf Protobuf是一种以有效并可...

weixin_34247155的博客 651

SpringBoot 插件化开发详细总结

SpringBoot 插件化开发方案总结

congge 1万+

mpack简明教程

本文先简单介绍MessagePack的基本概念。 然后,介绍一个MessagePack C API - MPack的通常使用。 接着尝试对MPack截断数据的读取。

大草的博客 2308

二十一、CANdelaStudio深入-SPRMIB的配置

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的肯定响应抑制位配置,欢迎各位朋友订阅、评论,可以提出宝贵意见,以持续输出更好的作品,同时会根据评论、私信不定期更新文章内容,以及专栏目录。订阅该专栏的朋友可私信小编免费答疑解惑(^U^)ノ~YO CANdelaStudio-从入门到深入目录 文章目录CANdelaStu

诊断协议那些事儿's blog 1870

PCL 点云配准-ICP算法(精配准)

ICP(Iterative Closest Point)算法是一种常用的点云精细配准算法。它通过迭代计算将一组点云变换到另一组点云的最佳位置,最终实现精确的对齐。ICP算法在每次迭代中选择与目标点云最接近的点作为对应点,通过计算最小化源点云和目标点云之间的均方误差(MSE)来进行刚性变换(包括平移和旋转)。

纵马踏花向自由 1725

MessagePack介绍

1,今天在hacknews上看到很多人对messagepack的争论。首先了解什么是MessagePack:MessagePack is a binary-based efficient object serialization library. It enables to exchange structured objects between many languages like JSON. ...

盘古大叔 5172

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MessagePack, Protocol Buffers和Thrift序列化框架原理和比较说明

  第1部分 messagepack说明 1.1messagepack的消息编码说明 为什么messagepack比json序列化使用的字节流更少, 可通过图1-1、图1-2有个直观的感觉。    图1- 1 messagepack与json的格式对比1   图1- 2 messagepack与json的格式对比2 messagepack的具体的消息格式如图1-3所示,...

jimmee的专栏 835

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

MessagePack简介与在Python中使用msgpack

MessagePack数据交换格式简介,如何在Python中使用msgpack库打包和解包MessagePack数据。

空巢青年_rui的博客 7841

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

高效的二进制列化格式 MessagePack 详解

MessagePack (简称 msgPack)是一种高效的二进制序列化格式,可以将各种数据类型(如整数、字符串、数组等)转换为二进制格式,以便于在网络传输或存储时使用。与 JSON 和 XML 等文本格式相比,MessagePack 的二进制格式更加紧凑,因此在处理大量数据时可以提供更好的性能。

路多辛的所思所想 1974

【优化】序列化库的选择(FlatBuffers,ProtoBuf,MessagePack,Json)

在我接手的上一个项目里,也是使用的json来做为序列化库,当时对newtonsoft Json狠狠的吐槽了一把,它的性能有多么多么的差,尤其是在一些低端机上,GC Alloc和调用耗时都很大,当然, 这也与当时加载的云控的数据量有关。最近开了新的项目,因为要重新搭建一套框架,所以在涉及到大量配置表需要解析的时候,就要考虑选择哪一种序列化库了,其实有大量的项目,现在还是在使用json库来来做为数据交换的格式,足够的稳定,成熟,明文,方便阅读。===========下面是详细的废话==============

m0_73915763的博客 1517

移动场景下通信协议Json,FlatBuffers、ProtocolBuffers、MessagePack选优

写文章注册登录 首页 下载App 移动场景下通信协议FlatBuffers、ProtocolBuffers、MessagePack选优   爱唱歌的王小猫 关注 2017.04.05 19:26 字数 2828 阅读 562评论 0喜欢 2 大家都知道JSON是纯文本协议,优点是可读性高,使用

fjgui的博客 1177

OpenHarmony 对象序列化库——msgpack

MessagePack是一个非常高效的对象序列化库。它像JSON,但速度很快,而且很小。

m0_71263309的博客 781

MessagePack 序列化组件

MessagePack for C#(MessagePack-CSharp)是用于C#的极速MessagePack序列化程序,比MsgPack-Cli快10倍,与其他所有C#序列化程序相比,具有最好的性能。MessagePack for C#具有内置的LZ4压缩功能,可以实现超快速序列化和二进制占用空间小。性能永远是重要的!可用于游戏,分布式计算,微服务,数据存储到Redis等。支持.NET, .NET Core, Unity, Xamarin。

weixin_41316824的博客 1774

MessagePack:一种高效二进制序列化格式

MessagePack是一种高效二进制序列化格式。可以在多种语言中进行快速数据交换,比如JSON格式等。这种格式小巧快速,多个小整数会压缩成一个字节,通常短字符串压缩后只比原来长度增加1个字节。MessagePack支持超过50种编程语言和环境(完整列表)。Message Pack 规范MessagePack v7比之前的v06更加快速,支持所有的消息封装格式,包括扩展格式。快速上手Maven用户...

GarfieldEr007的专栏 2850

游戏开发unity插件MessagePack:基本介绍(附带messagepack、protobuf、json的压缩的大小和性能对比)

参考: https://www.cnblogs.com/Leo_wl/p/8143259.html 总结: (上图来自参考链接)

Cloud Flower的博客-专注unity 2387
上一篇: RabbitMQ vs Kafka vs Redis,Python消息队列选型全解析
下一篇: 【MQTT性能优化指南】:提升Python传感器数据吞吐量的5大关键技术
IterLoom
博客等级 码龄1年 171粉丝 2173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值