我使用mongo.jl并需要一种更有效的方式来转换MongoCursor
和OrderedDict
在这里,使用find
抓取数据光标通常需要< 1秒。提取和转换为OrderedDict大约需要20秒。
using Mongo
...
collection = MongoCollection(client, "myDB", json)
dataPre = find(collection, Dict(category=>id)) #Returns type Mongo.MongoCursor
i = 1
data = DataStructures.OrderedDict()
for rec in dataPre
data[i] = dict(rec)
i=i+1
end
编辑:我通过使用@profile
实现了95%的延迟是从dict到数组的转换,这是我从示例代码中省略的几行。
这里是带有省略行的相同示例代码:
using Mongo
...
collection = MongoCollection(client, "myDB", json)
dataPre = find(collection, Dict(category=>id)) #Returns type Mongo.MongoCursor
i = 1
data = DataStructures.OrderedDict()
form_arr = Array(Float64,(100,100,8,length(dataPre)))
for rec in dataPre
data = dict(rec) #A
for v1 = 1:100
for v2 = 1:8
form_arr[v1,:,v2,i] = data["info"][v1]["meas"][v2]["vals"] #B
end
end
i=i+1
end
剖析器指示A行占用约5%的时间,而B行占95%的时间。
我坚持使用那个dict结构..有没有办法更有效地提取和格式化数据?