ActiveRecord::Relation 转换为哈希慢
ActiveRecord::Relation convert to hash slow
i 从数据库中查询5000条记录,然后转换成Hash,'marker_id'作为key,如果'marker_id'也是一样,拼成Array。但是转换为哈希时非常慢。
total_attrs=MarkerAttr.where(marker_layer_id: layer.id)
temp_attrs={}
t=Time.now
for ta in total_attrs
if !temp_attrs.has_key?(ta.marker_id)
temp_attrs["#{ta.marker_id}"]=[]
end
temp_attrs["#{ta.marker_id}"].push(ta)
end
p "to_hash_time::#{Time.now-t}"
# TODO:: to_hash_time::1.563641124
感谢
嗯。我想知道 Enumerable#group_by 是否会更快。试试这个:
total_attrs = MarkerAttr.where(marker_layer_id: layer.id).all
temp_attrs = total_attrs.group_by(&:marker_id)
i 从数据库中查询5000条记录,然后转换成Hash,'marker_id'作为key,如果'marker_id'也是一样,拼成Array。但是转换为哈希时非常慢。
total_attrs=MarkerAttr.where(marker_layer_id: layer.id)
temp_attrs={}
t=Time.now
for ta in total_attrs
if !temp_attrs.has_key?(ta.marker_id)
temp_attrs["#{ta.marker_id}"]=[]
end
temp_attrs["#{ta.marker_id}"].push(ta)
end
p "to_hash_time::#{Time.now-t}"
# TODO:: to_hash_time::1.563641124
感谢
嗯。我想知道 Enumerable#group_by 是否会更快。试试这个:
total_attrs = MarkerAttr.where(marker_layer_id: layer.id).all
temp_attrs = total_attrs.group_by(&:marker_id)