首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中是否有针对性能变量和变量长的策略(或库)?

Java中是否有针对性能变量和变量长的策略(或库)?
EN

Stack Overflow用户
提问于 2012-05-22 15:12:39
回答 2查看 98关注 0票数 1

目前,我正在使用DataOutput.writeLong(long)序列化一些长数据。这样做的问题是显而易见的:在许多情况下,多头将非常小。我想知道性能最好的varint实现是什么?我已经看到了协议缓冲区的策略,以及对随机长数据的测试(这可能不是测试的正确分布),我看到了相当大的性能下降(大约慢了3-4倍)。这是意料之中的吗?有没有什么好的策略可以在节省空间的同时尽可能快地序列化longs?

谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

发布于 2012-05-22 15:17:49

使用标准DataOutput格式进行序列化并使用通用压缩算法(如GZIPOutputStream )进行压缩如何?

票数 0
EN

Stack Overflow用户

发布于 2012-05-22 15:34:38

协议缓冲区编码实际上非常好,但对随机长整型没有帮助-如果你的长整型可能是小的正数或负数(假设95%的时间在+/- 1000范围内),它最有用。

这个范围内的数字通常会以1、2或3个字节进行编码,而正常的长整型编码为8字节。在一组大的longs上尝试使用这种输入,通常可以节省50-70%的空间。

当然,计算这种编码有一些性能开销,但如果您使用此编码进行序列化,那么CPU时间无论如何都不会成为瓶颈-因此您可以有效地忽略编码成本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10697391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档