我正在构建一个大型哈希(约300,000个键和值)。我想知道如果我拥有易于理解的键名,例如Timestmp
(其中一些大约30个字符),哈希的读/写处理时间是否会改变。
或者缩短键到序列号系统(作为基本示例的:some_description_of_the_key
,:0_1
)是否有优势?
假设的优点是每个键的字符长度都短得多。
答案 0 :(得分:2)
简而言之,如果您的密钥当前是字符串,数字或符号而不是对象,则可以减小大小,但不太可能提高性能。如果您的密钥是模型或其他对象,建议您更改它,因为这样做确实会增加开销。如果我们在谈论以下两者之间的区别:
{ my_very_long_key_or_something: “”}
Vs
{ 1447 => “” }
然后,您要保存的字节数等于减少的字符数。因此,对于30万条记录,每节省15个字符将是4.29Mb。如果您要处理的内存不足,那么这种节省是有好处的,那就去吧。我确实建议您公开键以使其易于理解。
同样,前提是您的钥匙不是物件;您的读/写问题很可能与值的大小(对象或嵌套哈希)或您要应用于哈希的处理有关。您可以尝试进行基准测试以将性能与以下各项进行比较:
Benchmark.ms { my_hash.process }