IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

对protostuff和java序列化的小测试

淘宝网通用产品团队博客 2012-05-02 23:53:49 累计浏览 4,606 次
本机暂存

    测试方法: 对一个含16个Integer/String/Date类型字段的扁平对象作序列化/反序列化,单机多线程循环执行,用循环一定次数之后sleep(1)控制频率,每隔1秒统计一次执行次数,并观察CPU/LOAD/内存等指标(因内存恒定开销,忽略掉)。

    测试环境:4 x Xeon E5520 2.27GHz, 7.3GB 虚拟机

    测试结果:

    一、采用java内置序列化:

    原图已失效

tps(w) thread cpu(%) load
8.9 1 22.3 0.8
15.5 2 46.3 1.64
21 3 69.7 2.88
23 4 88.5 3.5
20.5 5 70 4.2
19.5 6 71 5
20 7 67 6.28
20.5 8 64 6.5
20.5 40 70 7.5

    JAVA内置反序列化:

    原图已失效

tpc(w) thread cpu(%) load
2 1 24.6 1.1
3.85 2 49 1.9
5.8 3 72 2.8
7.65 4 96.6 4
7.6 5 96.8 4.5
7.6 6 96.9 6.3
7.6 7 97.1 7.2
7.6 8 98 9
7.6 40 97 14.5

    二 protostuff序列化

    原图已失效

tpc(w) thread cpu(%) load
54 1 9.8 1
105 2 22 0.8
150 3 41 1.8
190 4 52 2.44
180 5 66 3.6
200 6 76 5
240 7 85.7 5.1
250 8 94.3 5.3
270 40 99 17

    protostuff反序列化

    原图已失效

tpc(w) thread cpu(%) load
38 1 11 0.9
71 2 28.7 1.6
97 3 49 1.9
142 4 57.7 2.5
150 5 65 3.7
160 6 73 4.6
170 7 81 6.8
177 8 89 6.5
175 40 93 10.5

    小结论:

    1、线程数接近CPU核数能达到最好性能

    2、java/protostuff序列化比反序列化性能都要好2倍左右

    3、java序列化性能不理想,cpu跑满,也就10w左右,protostuff跟它完全不是一个量级,可以达到200w以上

    相关推荐:

    https://github.com/eishay/jvm-serializers/wiki (各种序列化对比测试,生成报表)

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. SmartSprites - 命令行形式的CSS Sprites生成器 (累计阅读 123,895)
  2. Java开发岗位面试题归类汇总 (累计阅读 22,157)
  3. android 开发入门 (累计阅读 19,528)
  4. 我的PHP,Python和Ruby之路 (累计阅读 13,147)
  5. HashMap解决hash冲突的方法 (累计阅读 12,654)
  6. 一个大二学生有关如何成为一名软件工程师的疑问及答复 (累计阅读 9,181)
  7. 浅析C++多线程内存模型 (累计阅读 8,803)
  8. C++ 多线程编程总结 (累计阅读 8,097)
  9. Java程序员应该知道的10个eclipse调试技巧 (累计阅读 8,013)
  10. 如何让员工忠于公司? (累计阅读 7,940)