如果我缩短哈希中每个键名的长度,那会缩短哈希的读写时间吗?

时间:2018-12-13 12:05:55

标签: ruby-on-rails ruby benchmarking

我正在构建一个大型哈希(约300,000个键和值)。我想知道如果我拥有易于理解的键名,例如Timestmp(其中一些大约30个字符),哈希的读/写处理时间是否会改变。

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

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

1 个答案:

答案 0 :(得分:2)

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

{ my_very_long_key_or_something: “”}

Vs

{ 1447 => “” }

然后,您要保存的字节数等于减少的字符数。因此,对于30万条记录,每节省15个字符将是4.29Mb。如果您要处理的内存不足,那么这种节省是有好处的,那就去吧。我确实建议您公开键以使其易于理解。

同样,前提是您的钥匙不是物件;您的读/写问题很可能与值的大小(对象或嵌套哈希)或您要应用于哈希的处理有关。您可以尝试进行基准测试以将性能与以下各项进行比较:

Benchmark.ms { my_hash.process }