如果我缩短散列中每个键名的长度,是否会缩短该散列的 read/write 时间?

If I shorten the length of each key name in a hash, will that shorten the read/write time of that hash?

我正在构建一个大型散列(约 300,000 个键和值)。我想知道如果我有人类可读的密钥名称,哈希的 read/write 处理时间是否会改变,例如::some_description_of_the_key 其中一些大约有 30 个字符。

或者缩短序列号系统的密钥是否有优势(:0_1:1_1 作为基本示例)?

假设的优势是每个键的字符长度会短得多。

简而言之,假设您的密钥当前是字符串、数字或符号而不是对象,它会减小大小但不太可能提高性能。如果您的密钥是模型或其他对象,我建议更改它,因为它会增加开销。如果我们谈论两者之间的区别:

{ my_very_long_key_or_something: “”}

VS

{ 1447 => “” }

那么你节省的字节数等于减少的字符数。因此,对于 300k 条记录,每条记录 15 个字符将节省 4.29Mb。如果您正在处理内存不足的问题,并且这种节省是一种好处,那就去做吧。不过,我真的建议公开密钥以使其易于理解。

同样,前提是您的密钥不是对象;您的 read/write 问题更可能与值的大小(对于对象或嵌套哈希)或您对哈希应用的处理有关。您可以尝试进行基准测试以比较性能:

Benchmark.ms { my_hash.process }