我正在开发移动应用程序,我想优化它从服务器接收的数据(作为JSON)。 返回了3个列表(每个列表包含自己的对象类,近似列表大小为50,100和170)。每个对象都有一个Guid id,每个对象都有一些关系数据。 E.g:
o = { Id = "8f088552-5b24-4ba4-a6e5-8958c4353581",
RelatedIds = ["19d2e562-0874-473f-8e05-7052e8defd9a", "615b4c47-199a-4f7d-8268-08ed43d9c891", ... ] }
有没有办法将这些Guid压缩到某个分类器而不存储身份映射?也许使用哈希函数?
答案 0 :(得分:0)
您可以将GUID的16字节表示转换为Base 64字符串。但是你没有提到编程语言,所以我们无法进一步帮助。
这里不推荐使用哈希函数,因为哈希函数通常是有损的。
答案 1 :(得分:0)
没有。 (非加密)哈希的一个属性是它们碰撞:hash(a) == hash(b)
但a != b
。它们是一种性能优化,在这种情况下,您进行了大量的等式检查,并且您期望得到许多错误的结果(因为hash(a) != hash(b)
然后是a != b
)。 GUID->计数器地图可能是在这里获得较小ID的最佳方式。
答案 2 :(得分:0)
您可以将hex(base16)转换为base64,并删除所有标点符号。使用base64时应节省25%,标点符号应节省4个字节。
答案 3 :(得分:0)
考虑到这一点我已经意识到HTTP压缩(如果启用)可能会足够好地压缩这些数据,因此手动压缩数据并不值得。