首 页 » 程序开发 » Ruby需要生成大量对象时慎用OpenStruct

Ruby需要生成大量对象时慎用OpenStruct

[ 2017-09-14 23:55 | 浏览次数: 160次 | 0条评论 ]

我本来需要采集数据, 总共有30万个数据, 每个数据都包含三个value和一个time.

本来使用的是OpenStruct, 后来发现程序采集完需要500M左右

后来改用Struct, 还是500M左右

最后自己写一个类, 发现只需要26.6M左右

改变Struct使用方法,将Struct.new放在循环外面定义, 发现也只需要26.6M左右

大概代码如下

    voice_st = .new  #使用OpenStruct, 需要500M左右

    voice_st = OnePCM.new #使用OpenStruct, 只需要26.6M左右

    one_pcm_class = Struct.new :value1,:value2,:value3,:time #此种方法使用Struct, 需要500M左右
    pcm_st = one_pcm_class.new

    pcm_st.value1 = value_arr[0].to_i;
    pcm_st.value2 = value_arr[1].to_i;
    pcm_st.value3 = value_arr[2].to_i;
    pcm_st.time= time_value
    $pcm_arr << pcm_st

看来是因为对象里包含了类的信息,所以导致一个对象占用很大的空间

您可以任意转载本文,但转载时请勿删除作者信息。
作者:hgyxbll,原文链接:http://shashanzhao.com/archives/1199.html
上一篇: |

沙发为空,还不快枪?[点此发言]

目前还没有任何评论.