我正在构建一个大散列(大约300000个键和值(。我想知道,如果我有人类可读的密钥名称,比如::some_description_of_the_key
,有些大约是30个字符,那么哈希的读/写处理时间是否会改变。
或者缩短序列号系统的密钥(:0_1
,:1_1
作为一个基本示例(会有好处吗?
假设的优点是每个键的字符长度要短得多。
简而言之,如果您的键当前是字符串、数字或符号而不是对象,它会减小大小,但不太可能提高性能。如果您的密钥是一个模型或其他对象,我建议更改它,因为它确实会增加开销。如果我们谈论的是之间的区别
{ my_very_long_key_or_something: “”}
与
{ 1447 => “” }
然后保存的字节数等于减少的字符数。因此,对于300k张唱片,每个15个字符的节省量将为4.29Mb。如果你正在处理内存不足的问题,而这种节省是一个好处,那么就去做吧。不过,我真的建议你透露密钥,让它变得可以理解。
同样,前提是您的密钥不是对象;您的读/写问题更有可能与值的大小(对于对象或嵌套哈希(或您对哈希的处理有关。您可以尝试使用基准测试来比较性能:
Benchmark.ms { my_hash.process }