我正在尝试使用交易数据找出要填充的给定数量的价格变动的平均值、中间值和百分位数范围。附上下面的代码。问题是当我在约 80k 记录上运行代码时,代码给了我 wsfull 错误。我正在使用 4g linux 机器。目前我只能运行大约 30k 条记录,即使这样 q 也使用了我 70% 以上的内存。有什么办法让它对内存更友好吗?
rangeForVol : {[symIn; vol; dt]
data: select from table where sym=symIn, date=dt;
data: update cumVol: sums quantity, cVol: sums quantity from data;
data: update cumVolTgt: cumVol + vol from data;
data: update pxLst: price[where each ((cumVol>=/:cVol) and (cumVol<=/:cumVolTgt))=1] from data;
.Q.gc[];
data: update minPx: min each pxLst, maxPx: max each pxLst from data;
data: update range: maxPx - minPx from data;
data
};
select count i by floor range%0.5 from rangeForVol[`ABC; 2500; 2012.06.04]