【问题标题】:why memory size of an array of hashes is increasing after sorting ? (In Ruby)为什么哈希数组的内存大小在排序后会增加? (在红宝石中)
【发布时间】:2017-11-20 13:46:52
【问题描述】:

为什么哈希数组的内存大小在排序后会增加?

可以说,有一个哈希数组。如果我们检查该数组的内存大小,它的返回值为 44。 现在如果我对该数组应用排序,那么它的内存大小现在会增加。

require 'objspace'
array = [{:a=>1, :b=>1}, {:a=>1, :b=>3}, {:a=>1, :b=>2}, {:a=>1, :b=>4}, {:a=>1, :b=>6}, {:a=>1, :b=>7}]
ObjectSpace.memsize_of(array)
>> 44
ObjectSpace.memsize_of(array.sort_by{|x| -x[:b]})
>> 68
sorted_array = array.sort_by{|x| -x[:b]}
>> [{:a=>1, :b=>7}, {:a=>1, :b=>6}, {:a=>1, :b=>4}, {:a=>1, :b=>3}, {:a=>1, :b=>2}, {:a=>1, :b=>1}]
ObjectSpace.memsize_of(sorted_array)
>> 68

【问题讨论】:

    标签: arrays ruby sorting hash


    【解决方案1】:

    直接来自the documentation

    返回obj的消耗内存大小。

    请注意,返回大小不完整。您只需要将此信息作为HINT 处理。 特别是T_DATA 的大小可能不正确。

    如果您想深入了解为什么该值只是一个“提示”,那么herehere 将是一个很好的起点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      相关资源
      最近更新 更多