เบเปเบฒเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเบเปเบฝเบงเบเบฑเบเบเบทเปเบเบเบฒเบเบเบญเบ KDB+, เบเบฒเบชเบฒเบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบก Q เปเบกเปเบเบซเบเบฑเบ, เบเบธเบเปเบเบเปเบฅเบฐเบเบธเบเบญเปเบญเบเบเบญเบเบเบงเบเปเบเบปเบฒเปเบกเปเบเบซเบเบฑเบเปเบเบญเบฐเบเบตเบเบเบญเบเบเปเบญเบ
เบเบฒเบเบเปเบฒเบชเบฐเปเบซเบเบต
KDB+ เปเบกเปเบเบเบฒเบเบเปเปเบกเบนเบเบเบฑเบเบเบตเปเปเบเบฑเปเบเปเบชเปเบเปเปเบกเบนเบเบเปเบฒเบเบงเบเบซเบผเบงเบเบซเบผเบฒเบ, เบเบฑเบเบฎเบฝเบเบเบฒเบกเปเบเบเบชเบฐเปเบเบฒเบฐ (เบเบปเปเบเบเปเปเบกเปเบเบเบฒเบกเปเบงเบฅเบฒ). เบกเบฑเบเบเบทเบเบเปเบฒเปเบเปเบเบปเปเบเบเปเปเบเบชเบฐเบเบฒเบเบฑเบเบเบฒเบเปเบเบดเบ - เบเบฐเบเบฒเบเบฒเบ, เบเบญเบเบเบถเบเบเบฒเบเบฅเบปเบเบเบถเบ, เบเปเบฅเบดเบชเบฑเบเบเบฐเบเบฑเบเปเบ. เบเบฒเบชเบฒ Q เปเบกเปเบเบเบฒเบชเบฒเบเบฒเบเปเบเบเบญเบ KDB+ เบเบตเปเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเปเปเบกเบนเบเบเบตเปเปเบเปเบขเปเบฒเบเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบ. เบญเบธเบเบปเบกเบเบฒเบ Q เปเบกเปเบ brevity เปเบฅเบฐเบเบฐเบชเบดเบเบเบดเบเบฒเบ, เปเบเบเบฐเบเบฐเบเบตเปเบเบงเบฒเบกเบเบฑเบเปเบเบเปเบกเปเบเบเบฒเบเปเบชเบเบชเบฐเบฅเบฐ. เบเบตเปเปเบกเปเบเปเบซเบเบเบปเบเปเบเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบฒเบชเบฒ vector เบเบฐเบเบฒเบเบเบตเปเบเบฐเปเบเบปเปเบฒเปเบเปเบเบเปเบฅเบฐเบเบตเปเบเบเปเปเบเบฒเบก, เปเบฅเบฐเบเบงเบฒเบกเบญเบธเบเบปเบกเบชเบปเบกเบเบนเบเบเบญเบเบเบฒเบเบเบฑเบเบเบถเบเบเปเบงเบเปเบซเปเบเปเบฒเบเปเบซเบฑเบเบชเปเบงเบเปเบซเบเปเบเบงเปเบฒเบเบญเบเปเบเปเบเบกเปเบเบซเบเปเบฒเบเปเบเบฝเบง, เปเบเบดเปเบเปเบเบเบตเปเบชเบธเบเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเปเบฒเบเบเปเปเบเบฒเบเปเบเบปเปเบฒเปเบ.
เปเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบฑเบเปเบเบเบเบฒเบเปเบเบฑเบกเบฎเบนเบเปเบเบเปเบ Q เปเบฅเบฐเบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเบเบฒเบเบฅเบญเบเบกเบฑเบเบญเบญเบ. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเปเบฒเบเบเบฐเบเปเบญเบเบเบฒเบ Q. เบเบปเบงเบเบดเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฒเบงเปเบซเบฅเบเปเบงเบตเบเบฑเบ 32-bit เปเบเปเบเบฃเบตเบขเบนเปเปเบเปเบงเบฑเบเปเบเบเปเบเบญเบเบเปเบฅเบดเบชเบฑเบ kx -
เบเบฒเบเบชเปเบฒเบเบเบฑเบเบซเบฒ
เบกเบตเปเบซเบผเปเบเบเบตเปเบชเบปเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบกเบตเบเปเปเบกเบนเบเบเบธเบเป 25 milliseconds. เปเบเบทเปเบญเบเบเบฒเบ KDB+ เบเบทเบเบเปเบฒเปเบเปเบเบปเปเบเบเปเปเบเบเปเบฒเบเบเบฒเบเปเบเบดเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเบปเบกเบกเบธเบเบงเปเบฒเบเบตเปเปเบกเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒ (เบเบฒเบเบเปเบฒ), เบเบตเปเบกเบตเบเบฑเบเบเปเปเปเบเบเบตเป: เปเบงเบฅเบฒ (เปเบงเบฅเบฒเปเบเบฑเบ milliseconds), sym (เบเบฒเบเบเปเบฒเบเบปเบเบเปเบฅเบดเบชเบฑเบเปเบเบเบฐเบซเบผเบฒเบเบซเบผเบฑเบเบเบฑเบ -. IBM, AAPL,โฆ), เบฅเบฒเบเบฒ (เบฅเบฒเบเบฒเบเบตเปเบฎเบธเปเบเปเบเปเบเบทเบเบเบทเป), เบเบฐเบซเบเบฒเบ (เบเบฐเบซเบเบฒเบเบเบญเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒ). เปเบฅเบเบฐเบซเปเบฒเบ 25 millisecond เปเบกเปเบเบเบฒเบกเปเบเบกเบฑเบ, เบเปเปเบเปเบญเบเปเบเบตเบเปเบ เปเบฅเบฐ เบเปเปเบเบปเบเปเบเบตเบเปเบ. เบเบฒเบเบเบฐเบเบปเบเบเบปเบงเบเบญเบเบกเบฑเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเปเบกเบนเบเบกเบฒเบฎเบญเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเปเบเบทเบ buffed เปเบฅเปเบง. เบกเบฑเบเบเบฐเปเบเบฑเบเบเบฒเบเบเปเบฒเบเบเบตเปเบเบฐเบเบฐเบเบดเบเบฑเบ buffering เปเบเบเปเบฒเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ, เบฅเบงเบกเบเบฑเบ buffering เปเบเบเปเบเบทเปเบญเบเปเบซเบงเปเบเบเบญเบตเบเบเบฒเบกเบเบฒเบเปเบซเบผเบเปเบเบเบฐเบเบธเบเบฑเบ, เปเบเปเบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเบเปเบฒเบเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเบธเบกเปเบชเปเปเบฅเบเบฐเปเบงเบฅเบฒเบเบปเบเบเบตเป.
เบเบฒเบเบเปเบฅเบดเบเบฒเบเบเปเบญเบเบเบฑเบเบเบธเบเปเบเบฒเบเบตเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบชเบฑเบเบเบฒเบฅเบฑเบเบเบฒเปเบเบปเปเบฒเบเบฒเบเบเบฑเบ sym เบเบธเบเบเบญเบเบเบฑเบเบเบฑเบเบเบฒเบเบฅเบงเบเบฅเบงเบก - เบฅเบฒเบเบฒเบชเบนเบเบชเบธเบ, เบฅเบฒเบเบฒเบชเบฐเปเบฅเปเบ, เบเบฐเบซเบเบฒเบเบฅเบงเบก, เปเบฅเบฐเบญเบทเปเบเป. เบเปเปเบกเบนเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบ. เบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเบเปเบฒเบเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเบปเบกเบกเบธเบเบงเปเบฒเบซเบเปเบฒเบเบตเปเบเบฑเบเบซเบกเบปเบเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบดเบเปเบฅเป incrementally, i.e. เปเบเบทเปเบญเปเบซเปเปเบเปเบกเบนเบเบเปเบฒเปเบซเบกเป, เบกเบฑเบเบเบฝเบเบเปเบเบตเปเบเบฐเบฎเบนเปเบชเบญเบเบเบปเบงเปเบฅเบ - เบเปเบฒเปเบเบปเปเบฒเปเบฅเบฐเบกเบนเบเบเปเบฒเบเบฒเปเบเบปเปเบฒ. เบเบปเบงเบขเปเบฒเบ, เบเบฑเบเบเบฑเบ max, average, sum เบกเบตเบเบธเบเบชเบปเบกเบเบฑเบเบเบตเป, เปเบเปเบเบฑเบเบเบฑเบ median เบเปเปเบกเบต.
เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบฐเบชเบปเบกเบกเบธเบเบงเปเบฒเบเบฒเบเบเปเบฒเบเบเบญเบเบเปเปเบกเบนเบเบเบฒเปเบเบปเปเบฒเปเบกเปเบเบเปเบฒเบชเบฑเปเบเปเบงเบฅเบฒ. เบเบตเปเบเบฐเปเบซเปเบเบงเบเปเบฎเบปเบฒเบกเบตเปเบญเบเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเบงเบฝเบเบเบฝเบเปเบเปเบเบฒเบเบตเบชเบธเบเบเปเบฒเบ. เปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ, เบกเบฑเบเบเบฝเบเบเปเบเบตเปเบเบฐเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฒเบเบตเปเบเบเบฐเบเบธเบเบฑเบเปเบฅเบฐเบเปเบญเบเบซเบเปเบฒเปเบเบเปเบฅเบฐเบเบตเบเบตเปเบเบฒเบเบเบฑเบเบเบธเบเบเบฒเบเบขเปเบฒเบเบเปเบฒ. เบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเบเปเบฒเบเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบเบดเบเบฒเบฅเบฐเบเบฒเบเปเบฅเบฐเบเบตเบเบตเป.
เบเบฑเบเบเบฑเบเบเบฒเบเบฅเบงเบเบฅเบงเบก
เบเบฑเบเบเบฑเบเบเบฒเบเบฅเบงเบเบฅเบงเบกเบเบตเปเบเปเบญเบเบเบฒเบเปเบกเปเบเบฅเบฐเบเบธเปเบงเปเบเปเบฒเบเบฅเบธเปเบกเบเบตเป. เบเปเบญเบเปเบญเบปเบฒเบเบงเบเบกเบฑเบเบซเบผเบฒเบเปเบเบปเปเบฒเบเบตเปเปเบเบฑเบเปเบเปเบเปเปเบเบทเปเบญเปเบเบตเปเบกเบเบฒเบเปเบซเบผเบเปเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ:
- high โ เบฅเบฒเบเบฒเบชเบนเบเบชเบธเบ โ เบฅเบฒเบเบฒเบชเบนเบเบชเบธเบเบเปเปเบเบฒเบเบต.
- low โ min price โ เบฅเบฒเบเบฒเบเปเบฒเปเบชเบธเบเบเปเปเบเบฒเบเบต.
- firstPrice โ เบฅเบฒเบเบฒเบเปเบฒเบญเบดเบ โ เบฅเบฒเบเบฒเบเปเบฒเบญเบดเบเบเปเปเบเบฒเบเบต.
- LastPrice - เบฅเบฒเบเบฒเบชเบธเบเบเปเบฒเบ - เบฅเบฒเบเบฒเบชเบธเบเบเปเบฒเบเบเปเปเบเบฒเบเบต.
- firstSize - เบเบฐเบซเบเบฒเบเบเปเบฒเบญเบดเบ - เบเบฐเบซเบเบฒเบเบเบฒเบเบเปเบฒเบเบฑเปเบเบเปเบฒเบญเบดเบเบเปเปเบเบฒเบเบต.
- LastSize - เบเบฐเบซเบเบฒเบเบชเบธเบเบเปเบฒเบ - เบเบฐเบซเบเบฒเบเบเบฒเบเบเปเบฒเบชเบธเบเบเปเบฒเบเปเบเบซเบเบถเปเบเบเบฒเบเบต.
- numTrades โ เบเบฑเบ i โ เบเปเบฒเบเบงเบเบเบญเบเบเบฒเบเบเบทเปเบเบฒเบเบเปเปเบเบฒเบเบต.
- เบเบฐเบฅเบดเบกเบฒเบ โ เบเบฐเบซเบเบฒเบเบฅเบงเบก โ เบเบปเบเบฅเบงเบกเบเบญเบเบเบฐเบซเบเบฒเบเบเบฒเบเบเปเบฒเบเปเปเบเบฒเบเบต.
- pvolume โ เบฅเบฒเบเบฒเบฅเบงเบก โ เบเบปเบเบฅเบงเบกเบเบญเบเบฅเบฒเบเบฒเบเปเปเบเบฒเบเบต, เบเปเบญเบเบเบฒเบเบชเปเบฒเบฅเบฑเบ avgPrice.
- โ เบฅเบฒเบเบฒเบฅเบงเบกเบเบญเบเปเบเบดเบ* เบเบฐเปเบฒเบ โ เบเบฐเบฅเบดเบกเบฒเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเบณเบเบฑเบเปเบปเบเบเปเปเบเบฒเบเบต.
- avgPrice โ pvolume%numTrades โ เบฅเบฒเบเบฒเบชเบฐเปเบฅเปเบเบเปเปเบเบฒเบเบต.
- avgSize โ เบเบฐเบฅเบดเบกเบฒเบ%numTrades โ เบเบฐเบซเบเบฒเบเบเบฒเบเบเปเบฒเบชเบฐเปเบฅเปเบเบเปเปเบเบฒเบเบต.
- vwap โ turnover%volume โ เบฅเบฒเบเบฒเบชเบฐเปเบฅเปเบเบเปเปเบเบฒเบเบต เบเปเบณเปเบฑเบเบเบฒเบกเบเบฐเปเบฒเบเบเบธเบฅเบฐเบเบณ.
- cumVolume โ เบเบฐโเบฅเบดโเบกเบฒเบโเบฅเบงเบก โ เบเบฐโเบซเบเบฒเบโเบชเบฐโเบชเบปเบกโเบเบญเบโเบเบฒเบโเปเบฎเบฑเบโเบเบธโเบฅเบฐโเบเปเบฒโเปเบโเปเบฅโเบเบฐโเบเบฑเบโเบซเบกเบปเบ.
เปเบซเปเบเบถเบเบชเบฒเบซเบฒเบฅเบทเบเบฑเบเบเบตเบซเบเบถเปเบเบเบธเบเบเบตเปเบเปเปเบเบฑเบเปเบเบ - เบงเบดเบเบตเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบเปเบฅเปเบฒเปเบซเบผเบปเปเบฒเบเบตเปเบเบฑเปเบเบเปเบฒเบญเบดเบเปเบฅเบฐเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเบฒเบเบตเบเปเปเบกเบฒ. เบเบฒเบเบเบฑเบเบเบญเบเบเบฐเปเบเบ firstPrice เบเบฐเบเปเบญเบเบเบทเบเบเบฑเปเบเบเบปเปเบเปเบเบฑเบ null เปเบเปเบฅเบฐเปเบเบทเปเบญ; เบเปเบฒเบเบญเบเบเบงเบเบกเบฑเบเบเปเปเปเบเปเบเบทเบเบเบณเบเบปเบ. เบเบฐเปเบเบเบเบฐเบฅเบดเบกเบฒเบเบญเบทเปเบเปเบเปเบญเบเบเบทเบเบเบฑเปเบเปเบเบฑเบ 0. เบเบฑเบเบกเบตเบเบฑเบเบเบตเปเบเปเบญเบเบเบฒเบเบงเบดเบเบตเบเบฒเบเบฅเบงเบก - เบเบปเบงเบขเปเบฒเบ, cumVolume เบเปเบญเบเบเบทเบเบเบฑเบเบฅเบญเบเบเบฒเบเบเบฒเบเบตเบเบตเปเบเปเบฒเบเบกเบฒ, เปเบฅเบฐเบชเปเบฒเบฅเบฑเบเบเปเบฒเบญเบดเบเบเบตเปเบเบฑเปเบเปเบเบฑเบ 0. เปเบซเปเบเปเบฒเบเบปเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเปเบซเบผเบปเปเบฒเบเบตเปเบเบฑเบเบซเบกเบปเบเปเบเบเปเบเปเบเปเปเบกเบนเบเบงเบฑเบเบเบฐเบเบฒเบเบธเบเบปเบก. เบเบฐเปเบเบ (เบเบฝเบเบเบฝเบเบเบฑเบเบเบฑเบเบเบถเบ):
// list ! list โ ัะพะทะดะฐัั ัะปะพะฒะฐัั, 0n โ float null, 0N โ long null, `sym โ ัะธะฟ ัะธะผะฒะพะป, `sym1`sym2 โ ัะฟะธัะพะบ ัะธะผะฒะพะปะพะฒ
initWith:`sym`time`high`low`firstPrice`lastPrice`firstSize`lastSize`numTrades`volume`pvolume`turnover`avgPrice`avgSize`vwap`cumVolume!(`;00:00;0n;0n;0n;0n;0N;0N;0;0;0.0;0.0;0n;0n;0n;0);
aggCols:reverse key[initWith] except `sym`time; // ัะฟะธัะพะบ ะฒัะตั
ะฒััะธัะปัะตะผัั
ะบะพะปะพะฝะพะบ, reverse ะพะฑัััะฝะตะฝ ะฝะธะถะต
เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบเบตเปเบก sym เปเบฅเบฐเปเบงเบฅเบฒเปเบเบปเปเบฒเปเบเบงเบฑเบเบเบฐเบเบฒเบเบธเบเบปเบกเปเบเบทเปเบญเบเบงเบฒเบกเบชเบฐเบเบงเบ, เบเบญเบเบเบตเป initWith เปเบกเปเบเปเบชเบฑเปเบเบเบตเปเบเบฝเบกเบเปเบญเบกเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบฅเบงเบกเบชเบธเบเบเปเบฒเบ, เบเปเบญเบเบเบตเปเบกเบฑเบเบเบฑเบเบเบปเบเบเปเบฒเบเบปเบ sym เบเบตเปเบเบทเบเบเปเบญเบเปเบฅเบฐเปเบงเบฅเบฒ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบกเบฑเบเปเบเบทเปเบญเปเบเบตเปเบกเปเบเบงเปเบซเบกเปเปเบชเปเบเบฒเบเบฐเบฅเบฒเบ.
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบญเบเบเบฒเบ aggCols เปเบกเบทเปเบญเบชเปเบฒเบเบเบฑเบเบเบฑเบเบเบฒเบเบฅเบงเบเบฅเบงเบก. เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเปเบญเบเบเบทเบเบเบตเปเบเบเปเบญเบเบเปเบฒเบชเบฑเปเบเบเบตเปเบชเบฐเปเบเบเบญเบญเบเปเบ Q เบเบทเบเบเบฐเปเบกเบตเบ (เบเบฒเบเบเบงเบฒเบซเบฒเบเปเบฒเบ). เปเบเบปเปเบฒเบซเบกเบฒเบเปเบกเปเบเปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบเบดเบเปเบฅเปเบเบฒเบเบฅเบฐเบเบฑเบเบชเบนเบเปเบเบซเบฒ cumVolume, เบเบฑเบเบเบฑเปเบเปเบเปเบเบฒเบเบเบฑเบเปเบกเปเบเบเบถเปเบเบเบฑเบเปเบเบงเบเบตเปเบเปเบฒเบเบกเบฒ.
เบเบฑเบเบเบตเปเบเปเบญเบเบเบฒเบเบเบฑเบเบฅเบญเบเปเบเบฑเบเบเบฒเบเบตเปเบซเบกเปเบเบฒเบเบซเบเบถเปเบเบเบตเปเบเปเบฒเบเบกเบฒ, เบเบฑเบ sym เปเบเปเบเบทเบเปเบเบตเปเบกเปเบเบทเปเบญเบเบงเบฒเบกเบชเบฐเบเบงเบ:
rollColumns:`sym`cumVolume;
เบเบญเบเบเบตเปเปเบซเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบเปเบฅเปเบฒเปเบเบฑเบเบเบธเปเบกเบเบฒเบกเบงเบดเบเบตเบเบตเปเบเบงเบเปเบเบปเบฒเบเบงเบเบเบฐเบเบฑเบเบเบธเบ. เบชเบฒเบกโเบเบฐโเปเบเบโเบชเบฒโเบกเบฒเบโเบเปเบฒโเปเบเบโเปเบเปโ:
- เบเบฑเบเบชเบฐเบชเบปเบก (เบเบฐเบฅเบดเบกเบฒเบ, เบเบฒเบเบซเบฑเบเบเปเบฝเบ, ..) โ เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเปเบเบตเปเบกเบกเบนเบเบเปเบฒเบเบฒเปเบเบปเปเบฒเบเบฑเบเบญเบฑเบเบเปเบญเบเปเปเบฒ.
- เบเปเบงเบเบเบธเบเบเบดเปเบชเบ (เบชเบนเบ, เบเปเปเบฒ, ..) - เบเปเบฒเบเปเบฒเบญเบดเบเปเบเบเบฒเบเบตเปเบกเปเบเปเบญเบปเบฒเบกเบฒเบเบฒเบเบเปเปเบกเบนเบเบเบฒเปเบเบปเปเบฒ, เบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเปเบกเปเบเบเบดเบเปเบฅเปเปเบเบเปเบเปเบเบฑเบเบเบฑเบ.
- เบเบฑเบเบเปเบญเบ. เบเบดเบเปเบฅเปเบชเบฐเปเปเบตเปเบเบเปเบเปเบเบฑเบเบเบฑเบ.
เปเบซเปเบเปเบฒเบเบปเบเบเบปเบงเปเบเบชเปเบฒเบฅเบฑเบเบซเปเบญเบเบฎเบฝเบเปเบซเบผเบปเปเบฒเบเบตเป:
accumulatorCols:`numTrades`volume`pvolume`turnover;
specialCols:`high`low`firstPrice`firstSize;
เบเปเบฒเบชเบฑเปเบเบเบดเบเปเบฅเป
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฑเบเบเบธเบเบเบฒเบเบฐเบฅเบฒเบเบฅเบงเบกเปเบเบชเบญเบเบเบฑเปเบเบเบญเบ. เปเบเบทเปเบญเบเบฐเบชเบดเบเบเบดเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบญเบดเบเบซเบผเบธเบเบฅเบปเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเปเบเบปเปเบฒเปเบเบทเปเบญเปเบซเปเบกเบตเบเบฝเบเปเบเปเบซเบเบถเปเบเปเบเบงเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเบปเบงเบญเบฑเบเบชเบญเบเปเบฅเบฐเบเบฒเบเบต. เบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบซเบเปเบฒเบเบตเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบซเบกเบปเบเปเบกเปเบ incremental เปเบฅเบฐ associative เบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบเบฑเปเบเบเบญเบเปเบเบตเปเบกเปเบเบตเบกเบเบตเปเบเบฐเบเปเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบซเบเปเปเบเบฒเบเบฐเบฅเบฒเบเปเบเบเบเบฒเบเปเบฅเบทเบญเบ:
select high:max price, low:min price โฆ by sym,time.minute from table
เบงเบดเบเบตเบเบฒเบเบเบตเปเบกเบตเบเปเปเปเบชเบ - เบเบธเบเบเบญเบเบเปเบฅเปเบฒเบเบตเปเบเบดเบเปเบฅเปเปเบกเปเบเบเบทเบเบเปเบฒเบเบปเบเปเบงเปเบฅเปเบงเบเบซเบเปเบฒ. เปเบเบเบเบต, เปเบ Q, เปเบฅเบทเบญเบเบเบฑเบเบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเบฑเบเบซเบเปเบฒเบเบตเปเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบปเบเปเบเบเบเบฒเบเปเบเปเบเบฝเบเบเบตเปเบชเปเบฒเบเปเบเบเปเบเบทเปเบญเบเปเบซเบง:
?[table;whereClause;byClause;selectClause]
เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเบฐโเบเปเปโเบญเบฐโเบเบดโเบเบฒเบโเปเบโเบฅเบฒเบโเบฅเบฐโเบญเบฝเบโเบฎเบนเบโเปเบเบโเบเบญเบโเบเบฒเบโเปเบเปโเบเบฝเบ; เปเบโเบเปโเบฅเบฐโเบเบตโเบเบญเบโเบเบงเบโเปเบฎเบปเบฒ, เบเบฝเบโเปเบเปโเปเบเบโเปเบฅเบฐโเบเบฒเบโเบชเบฐโเปเบเบโเบญเบญเบโเบเบตเปโเบเบฐโเปเบฅเบทเบญเบโเบเบตเปโเบเบฐโเปเบเบฑเบ nontrivial เปเบฅเบฐโเบเบงเบโเปเบเบปเบฒโเปเบเบปเปเบฒโเบเบงเบโเบเบฐโเปเบเบฑเบโเบงเบฑเบโเบเบฐโเบเบฒโเบเบธโเบเบปเบกโเบเบญเบโเบเบฑเบโเบฎเบนเบโเปเบเบ!expressions. เบเบฑเปเบเบเบฑเปเบ, เบซเบเปเบฒเบเบตเปเบซเบปเบเบเบปเบงเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเบเบปเบเบเบฑเปเบเบเปเปเปเบเบเบตเป:
selExpression:`high`low`firstPrice`lastPrice`firstSize`lastSize`numTrades`volume`pvolume`turnover!parse each ("max price";"min price";"first price";"last price";"first size";"last size";"count i";"sum size";"sum price";"sum price*size"); // each ััะพ ััะฝะบัะธั map ะฒ Q ะดะปั ะพะดะฝะพะณะพ ัะฟะธัะบะฐ
preprocess:?[;();`sym`time!`sym`time.minute;selExpression];
เปเบเบทเปเบญเบเบงเบฒเบกเบเบฑเบเปเบเบ, เบเปเบญเบเปเบเปเปเบเปเบเบฑเบเบเบฑเบ parse, เปเบเบดเปเบเบเปเบฝเบเบชเบฐเบเบฃเบดเบเบเบตเปเบกเบตเบเบฒเบเบชเบฐเปเบเบเบเบปเบ Q เปเบเบปเปเบฒเปเบเปเบเบเปเบฒเบเบตเปเบชเบฒเบกเบฒเบเบชเบปเปเบเบเบฑเบเบเบฑเบเบเบฑเบ eval เปเบฅเบฐเบเบตเปเบเปเบญเบเบเบฒเบเปเบเบซเบเปเบฒเบเบตเปเปเบฅเบทเบญเบ. เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒ preprocess เบเบทเบเบเปเบฒเบเบปเบเปเบเบฑเบเบเบฒเบเบเบฒเบเบเบฐเปเบ (i.e., เบเบฑเบเบเบฑเบเบเบตเปเบกเบต arguments เบเบตเปเบเปเบฒเบเบปเบเบเบฒเบเบชเปเบงเบ) เบเบญเบเบเบฑเบเบเบฑเบเบเบตเปเปเบฅเบทเบญเบ, เบซเบเบถเปเบ argument (เบเบฒเบเบฐเบฅเบฒเบ) เบซเบฒเบเปเบ. เบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเป preprocess เบเบฑเบเบเบฒเบเบฐเบฅเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเบฐเบฅเบฒเบ compressed.
เบเบฑเปเบเบเบญเบเบเบตเบชเบญเบเปเบกเปเบเบเบฒเบเบเบฑเบเบเบธเบเบเบฒเบเบฐเบฅเบฒเบเบฅเบงเบก. เบเปเบฒเบญเบดเบเปเบซเปเบเบฝเบ algorithm เปเบ pseudocode:
for each sym in inputTable
idx: row index in agg table for sym+currentTime;
aggTable[idx;`high]: aggTable[idx;`high] | inputTable[sym;`high];
aggTable[idx;`volume]: aggTable[idx;`volume] + inputTable[sym;`volume];
โฆ
เปเบ Q, เบกเบฑเบเปเบเบฑเบเปเบฅเบทเปเบญเบเบเปเบฒเบกเบฐเบเบฒเบเบตเปเบเบฐเปเบเปเบซเบเปเบฒเบเบตเปเปเบเบเบเบตเป / เบซเบผเบธเบเบเปเบญเบเปเบเบเบเบตเปเบเบฐเปเบเบฑเบ loops. เปเบเปเปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ Q เปเบเบฑเบเบเบฒเบชเบฒ vector เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเปเบเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบเบเบฑเบเบชเบฑเบเบเบฒเบฅเบฑเบเบเบฑเบเบซเบกเบปเบเปเบเปเบงเบฅเบฒเบเบฝเบง, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบทเปเบญเบเบฐเบกเบฒเบเบเปเบฒเบญเบดเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบเบเปเปเบกเบตเบเบฒเบ loop เบเบฑเบเบซเบกเบปเบ, เบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฝเบงเบเบฑเบเบชเบฑเบเบเบฒเบฅเบฑเบเบเบฑเบเบซเบกเบปเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ:
idx:calcIdx inputTable;
row:aggTable idx;
aggTable[idx;`high]: row[`high] | inputTable`high;
aggTable[idx;`volume]: row[`volume] + inputTable`volume;
โฆ
เปเบเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเบเบทเปเบกเบญเบตเบ, Q เบกเบตเบเบปเบงเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบตเปเปเบเบฑเบเปเบญเบเบฐเบฅเบฑเบเปเบฅเบฐเบกเบตเบญเปเบฒเบเบฒเบเบเบตเปเบชเบธเบ - เบเบนเปเบเบฐเบเบดเบเบฑเบเบเบฒเบเบกเบญเบเบซเบกเบฒเบเปเบเบเบเบปเปเบงเปเบ. เบกเบฑเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบเปเบฝเบเบเบธเบเบเบญเบเบเปเบฒเปเบเปเบเบเบชเปเบฒเบเบเปเปเบกเบนเบเบชเบฐเบฅเบฑเบเบชเบฑเบเบเปเบญเบเปเบเบเปเบเปเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบปเบงเบเบตเปเบงเบฑเบ, เบซเบเปเบฒเบเบตเปเปเบฅเบฐเบเบฒเบเปเบเปเบเบฝเบ. เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒเบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒ:
idx:calcIdx inputTable;
rows:aggTable idx;
// .[target;(idx0;idx1;..);function;argument] ~ target[idx 0;idx 1;โฆ]: function[target[idx 0;idx 1;โฆ];argument], ะฒ ะฝะฐัะตะผ ัะปััะฐะต ััะฝะบัะธั โ ััะพ ะฟัะธัะฒะฐะธะฒะฐะฝะธะต
.[aggTable;(idx;aggCols);:;flip (row[`high] | inputTable`high;row[`volume] + inputTable`volume;โฆ)];
เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เปเบเบทเปเบญเบเปเบฒเบเบปเบเบเบฒเบเบฐเบฅเบฒเบเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเปเบเบง, เบเปเปเปเบกเปเบเบเปเบฅเปเบฒ, เปเบฅเบฐเบเปเบฒเบเบเปเบญเบ transpose matrix (เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบฑเบเปเบเบซเบฒเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเปเบเบง) เปเบเบเปเบเปเบเบฑเบเบเบฑเบ flip. เบเบตเปเปเบกเปเบเบฅเบฒเบเบฒเปเบเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบฐเบซเบเบฒเบเปเบซเบเป, เบเบฑเปเบเบเบฑเปเบ, เปเบเบเบเบตเปเบเบฐเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเปเบเบฒเบเบกเบญเบเบซเบกเบฒเบเบเบปเปเบงเปเบเปเบเปเบเปเบฅเบฐเบเปเบฅเปเบฒเปเบเบเบเปเบฒเบเบซเบฒเบ, เบเบฒเบเบเปเบฒเปเบเปเบซเบเปเบฒเบเบตเปเปเบเบเบเบตเป (เปเบเบดเปเบเบเปเบฒเบเบเบท apostrophe):
.[aggTable;;:;]'[(idx;)each aggCols; (row[`high] | inputTable`high;row[`volume] + inputTable`volume;โฆ)];
เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฒเบเบเบฒเบเบเบฒเบเบเบฑเบเบเบฑเบเบญเบตเบเบเบฑเปเบ. เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเปเบ Q, เบเบฒเบเบชเปเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฑเบเปเบเบฑเบเบซเบเปเบฒเบเบตเปเปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเบซเบฒเบกเบฑเบเปเบเบเปเบเปเปเบเปเบฅเบฐเบซเบเปเบฒเบเบตเป (เปเบเบเบเบตเป) เปเบเบทเปเบญเปเบซเปเปเบเปเบฎเบฑเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบฅเบฒเบเบเบทเป.
เปเบเบทเปเบญเปเบซเปเปเบเปเปเบเบงเปเบฒเบเบธเบเบเบญเบเบเปเบฅเปเบฒเบเบตเปเบเบดเบเปเบฅเปเบเปเปเปเบเปเบเบทเบเปเบเปเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเปเบฒเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเปเบฒเบเปเบเบดเบเปเบเบเปเบเบทเปเบญเบเปเบซเบง. เบเปเบฒเบญเบดเบเปเบซเปเบเปเบฒเบเบปเบเบซเบเปเบฒเบเบตเปเปเบเบทเปเบญเบเบดเบเปเบฅเปเปเบเปเบฅเบฐเบเบฑเบ, เปเบเบเปเบเปเปเบเบงเปเบฅเบฐเบเบปเบงเปเบ inp เปเบเบทเปเบญเบญเปเบฒเบเบญเบตเบเปเบเบดเบเบเปเปเบกเบนเบเบฅเบงเบกเปเบฅเบฐเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ:
aggExpression:`high`low`firstPrice`lastPrice`firstSize`lastSize`avgPrice`avgSize`vwap`cumVolume!
("row[`high]|inp`high";"row[`low]&inp`low";"row`firstPrice";"inp`lastPrice";"row`firstSize";"inp`lastSize";"pvolume%numTrades";"volume%numTrades";"turnover%volume";"row[`cumVolume]+inp`volume");
เบเบฒเบเบเบฑเบเปเบกเปเบเบเบดเปเบชเบ; เบเปเบฒเบเบณเบญเบดเบเบเบญเบเบเบงเบเบกเบฑเบเบเปเปเบเบงเบเบเบทเบเบเบณเบเบงเบเปเบเบเบเบฑเบเบเบฑเบ. เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบงเปเบฒเบกเบฑเบเปเบเบฑเบเบเบฑเปเบเบเปเบฒเบญเบดเบเปเบเบเบเบฑเบเปเบเบง [`numTrades] - เบเปเบฒเบกเบฑเบเบกเบต 0, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบนเบเบเปเบฒเปเบกเปเบเบเปเบฒเบญเบดเบ. Q เบกเบตเบเบฑเบเบเบฑเบเปเบฅเบทเบญเบ - ?[เบเบฑเบเบเบตเบฅเบฒเบเบเบทเป boolean;list1;list2] - เปเบเบดเปเบเปเบฅเบทเบญเบเบเปเบฒเบเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป 1 เบซเบผเบท 2 เบเบถเปเบเบเบฑเบเปเบเบทเปเบญเบเปเบเปเบเบเบฒเบเปเบเปเบเบฝเบเบเปเบฒเบญเบดเบ:
// high -> ?[isFirst;inp`high;row[`high]|inp`high]
// @ - ัะพะถะต ะพะฑะพะฑัะตะฝะฝะพะต ะฟัะธัะฒะฐะธะฒะฐะฝะธะต ะดะปั ัะปััะฐั ะบะพะณะดะฐ ะธะฝะดะตะบั ะฝะตะณะปัะฑะพะบะธะน
@[`aggExpression;specialCols;{[x;y]"?[isFirst;inp`",y,";",x,"]"};string specialCols];
เปเบเบเบตเปเบเบตเปเบเปเบญเบเปเบญเบตเปเบเบงเปเบฒเบเบฒเบเบกเบญเบเบซเบกเบฒเบเปเบเบเบเบปเปเบงเปเบเบเบฑเบเบซเบเปเบฒเบเบตเปเบเบญเบเบเปเบญเบ (เบเบฒเบเบชเบฐเปเบเบเบญเบญเบเปเบเบงเบปเบเปเบฅเบฑเบ curly). เบกเบฑเบเปเบเปเบฎเบฑเบเบกเบนเบเบเปเบฒเบเบฐเบเบธเบเบฑเบ (เบเบฒเบเปเบเปเบเบฝเบเบเปเบฒเบญเบดเบ) เปเบฅเบฐเบเบฒเบเปเบเปเบเบฝเบเปเบเบตเปเบกเปเบเบตเบก, เบเบตเปเบเปเบญเบเบเปเบฒเบเปเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบต 4.
เปเบซเปเปเบเบตเปเบกเบฅเปเบฒเปเบเบเบซเบกเปเปเปเบเปเบเบเบเปเบฒเบเบซเบฒเบ, เปเบเบฒเบฐเบงเปเบฒเบเบฑเบเบเบฑเบเปเบกเปเบเบเบทเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบงเบเปเบเบปเบฒ:
// volume -> row[`volume]+inp`volume
aggExpression[accumulatorCols]:{"row[`",x,"]+inp`",x } each string accumulatorCols;
เบเบตเปเปเบกเปเบเบเบฒเบเบกเบญเบเบซเบกเบฒเบเบเบปเบเบเบฐเบเบดเปเบเบเบกเบฒเบเบเบฐเบเบฒเบ Q, เปเบเปเบเปเบญเบเบเปเบฒเบฅเบฑเบเบเปเบฒเบเบปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเปเบฒเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ. เบชเบธเบเบเปเบฒเบ, เปเบซเปเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบซเบเปเบฒเบเบตเปเบเบปเปเบเบเป:
// ":",/:aggExprs ~ map[{":",x};aggExpr] => ":row[`high]|inp`high" ะฟัะธัะฒะพะธะผ ะฒััะธัะปะตะฝะฝะพะต ะทะฝะฐัะตะฝะธะต ะฟะตัะตะผะตะฝะฝะพะน, ะฟะพัะพะผั ััะพ ะฝะตะบะพัะพััะต ะบะพะปะพะฝะบะธ ะทะฐะฒะธััั ะพั ัะถะต ะฒััะธัะปะตะฝะฝัั
ะทะฝะฐัะตะฝะธะน
// string[cols],'exprs ~ map[,;string[cols];exprs] => "high:row[`high]|inp`high" ะทะฐะฒะตััะธะผ ัะพะทะดะฐะฝะธะต ะฟัะธัะฒะฐะธะฒะฐะฝะธั. ,โ ัะฐััะธััะพะฒัะฒะฐะตััั ะบะฐะบ map[concat]
// ";" sv exprs โ String from Vector (sv), ัะพะตะดะธะฝัะตั ัะฟะธัะพะบ ัััะพะบ ะฒััะฐะฒะปัั โ;โ ะฟะพััะตะดะธะฝะต
updateAgg:value "{[aggTable;idx;inp] row:aggTable idx; isFirst_0=row`numTrades; .[aggTable;;:;]'[(idx;)each aggCols;(",(";"sv string[aggCols],'":",/:aggExpression aggCols),")]}";
เบเปเบงเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบตเป, เบเปเบญเบเบชเปเบฒเบเบเบฑเบเบเบฑเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเบเบฒเบเบชเบฐเบเบฃเบดเบเบเบตเปเบกเบตเบเบฒเบเบชเบฐเปเบเบเบเบตเปเบเปเบญเบเปเบซเปเบเปเบฒเบเปเบเบดเบ. เบเบปเบเปเบเปเบฎเบฑเบเบเบฐเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบตเป:
{[aggTable;idx;inp] rows:aggTable idx; isFirst_0=row`numTrades; .[aggTable;;:;]'[(idx;)each aggCols ;(cumVolume:row[`cumVolume]+inp`cumVolume;โฆ ; high:?[isFirst;inp`high;row[`high]|inp`high])]}
เบฅเบณเบเบฑเบเบเบฒเบเบเบฐเปเบกเบตเบเบเบฑเบเปเบกเปเบเบเบตเปเบเบเบฑเบเบเบฑเบ เปเบเบฒเบฐเบงเปเบฒเปเบ Q เบฅเบณเบเบฑเบเบเบฒเบเบเบฐเปเบกเบตเบเปเบกเปเบเบกเบฒเบเบฒเบเบเบงเบฒเบซเบฒเบเปเบฒเบ.
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบกเบตเบชเบญเบเบซเบเปเบฒเบเบตเปเบเบปเปเบเบเปเบเบตเปเบเปเบฒเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบดเบเปเบฅเป, เบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเปเบเบตเปเบกเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเปเบฅเบฑเบเบเปเบญเบเปเบฅเบฐเบเบฒเบเบเปเบฅเบดเบเบฒเบเปเบกเปเบเบเบฝเบกเบเปเบญเบก.
เบเบฑเปเบเบเบญเบเบชเบธเบเบเปเบฒเบ
เบเบงเบเปเบฎเบปเบฒเบกเบตเบซเบเปเบฒเบเบตเป preprocess เปเบฅเบฐ updateAgg เบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบซเบกเบปเบ. เปเบเปเบกเบฑเบเบเบฑเบเบกเบตเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบเปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบซเบฑเบเบเปเบฝเบเบเบตเปเบเบทเบเบเปเบญเบเบเปเบฒเบเบเบฒเบเบตเปเบฅเบฐเบเบดเบเปเบฅเปเบเบฑเบเบชเบฐเบเบตเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฅเบงเบเบฅเบงเบก. เบเปเบญเบเบญเบทเปเบ เปเบปเบ, เปเบซเป เบเบณ เบเบปเบเบเบฑเบเบเบฑเบ init:
init:{
tradeAgg:: 0#enlist[initWith]; // ัะพะทะดะฐะตะผ ะฟััััั ัะธะฟะธะทะธัะพะฒะฐะฝะฝัั ัะฐะฑะปะธัั, enlist ะฟัะตะฒัะฐัะฐะตั ัะปะพะฒะฐัั ะฒ ัะฐะฑะปะธัั, ะฐ 0# ะพะทะฝะฐัะฐะตั ะฒะทััั 0 ัะปะตะผะตะฝัะพะฒ ะธะท ะฝะตะต
currTime::00:00; // ะฝะฐัะฝะตะผ ั 0, :: ะพะทะฝะฐัะฐะตั, ััะพ ะฟัะธัะฒะฐะธะฒะฐะฝะธะต ะฒ ะณะปะพะฑะฐะปัะฝัั ะฟะตัะตะผะตะฝะฝัั
currSyms::`u#`symbol$(); // `u# - ะฟัะตะฒัะฐัะฐะตั ัะฟะธัะพะบ ะฒ ะดะตัะตะฒะพ, ะดะปั ััะบะพัะตะฝะธั ะฟะพะธัะบะฐ ัะปะตะผะตะฝัะพะฒ
offset::0; // ะธะฝะดะตะบั ะฒ tradeAgg, ะณะดะต ะฝะฐัะธะฝะฐะตััั ัะตะบััะฐั ะผะธะฝััะฐ
rollCache:: `sym xkey update `u#sym from rollColumns#tradeAgg; // ะบัั ะดะปั ะฟะพัะปะตะดะฝะธั
ะทะฝะฐัะตะฝะธะน roll ะบะพะปะพะฝะพะบ, ัะฐะฑะปะธัะฐ ั ะบะปััะพะผ sym
}
เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบฐเบเปเบฒเบเบปเบเบเบฒเบเบเปเบฒเบเบฒเบเบเบญเบเบกเปเบงเบ, เปเบเบดเปเบเบเบฐเบเปเบฝเบเบเบฒเบเบตเบเบฐเบเบธเบเบฑเบ:
roll:{[tm]
if[currTime>tm; :init[]]; // ะตัะปะธ ะฟะตัะตะฒะฐะปะธะปะธ ะทะฐ ะฟะพะปะฝะพัั, ัะพ ะฟัะพััะพ ะฒัะทะพะฒะตะผ init
rollCache,::offset _ rollColumns#tradeAgg; // ะพะฑะฝะพะฒะธะผ ะบัั โ ะฒะทััั roll ะบะพะปะพะฝะบะธ ะธะท aggTable, ะพะฑัะตะทะฐัั, ะฒััะฐะฒะธัั ะฒ rollCache
offset::count tradeAgg;
currSyms::`u#`$();
}
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบญเบเบเบฒเบเบเบฑเบเบเบฑเบเปเบเบทเปเบญเปเบเบตเปเบกเบเบปเบงเบญเบฑเบเบชเบญเบเปเบซเบกเป:
addSyms:{[syms]
currSyms,::syms; // ะดะพะฑะฐะฒะธะผ ะฒ ัะฟะธัะพะบ ะธะทะฒะตััะฝัั
// ะดะพะฑะฐะฒะธะผ ะฒ ัะฐะฑะปะธัั sym, time ะธ rollColumns ะฒะพัะฟะพะปัะทะพะฒะฐะฒัะธัั ะพะฑะพะฑัะตะฝะฝัะผ ะฟัะธัะฒะฐะธะฒะฐะฝะธะตะผ.
// ะคัะฝะบัะธั ^ ะฟะพะดััะฐะฒะปัะตั ะทะฝะฐัะตะฝะธั ะฟะพ ัะผะพะปัะฐะฝะธั ะดะปั roll ะบะพะปะพะฝะพะบ, ะตัะปะธ ัะธะผะฒะพะปะฐ ะฝะตั ะฒ ะบััะต. value flip table ะฒะพะทะฒัะฐัะฐะตั ัะฟะธัะพะบ ะบะพะปะพะฝะพะบ ะฒ ัะฐะฑะปะธัะต.
`tradeAgg upsert @[count[syms]#enlist initWith;`sym`time,cols rc;:;(syms;currTime), (initWith cols rc)^value flip rc:rollCache ([] sym: syms)];
}
เปเบฅเบฐเบชเบธเบเบเปเบฒเบ, เบเบฑเบเบเบฑเบ upd (เบเบทเปเปเบเบเบเบฑเปเบเปเบเบตเบกเบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบฑเบเบเบตเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ Q), เปเบเบดเปเบเบเบทเบเปเบญเบตเปเบเปเบเบเบฅเบนเบเบเปเบฒเปเบเบทเปเบญเปเบเบตเปเบกเบเปเปเบกเบนเบ:
upd:{[tblName;data] // tblName ะฝะฐะผ ะฝะต ะฝัะถะฝะพ, ะฝะพ ะพะฑััะฝะพ ัะตัะฒะธั ะพะฑัะฐะฑะฐััะฒะฐะตั ะฝะตัะบะพะปัะบะพ ัะฐะฑะปะธั
tm:exec distinct time from data:() xkey preprocess data; // preprocess & calc time
updMinute[data] each tm; // ะดะพะฑะฐะฒะธะผ ะดะฐะฝะฝัะต ะดะปั ะบะฐะถะดะพะน ะผะธะฝััั
};
updMinute:{[data;tm]
if[tm<>currTime; roll tm; currTime::tm]; // ะฟะพะผะตะฝัะตะผ ะผะธะฝััั, ะตัะปะธ ะฝะตะพะฑั
ะพะดะธะผะพ
data:select from data where time=tm; // ัะธะปัััะฐัะธั
if[count msyms:syms where not (syms:data`sym)in currSyms; addSyms msyms]; // ะฝะพะฒัะต ัะธะผะฒะพะปั
updateAgg[`tradeAgg;offset+currSyms?syms;data]; // ะพะฑะฝะพะฒะธะผ ะฐะณัะตะณะธัะพะฒะฐะฝะฝัั ัะฐะฑะปะธัั. ะคัะฝะบัะธั ? ะธัะตั ะธะฝะดะตะบั ัะปะตะผะตะฝัะพะฒ ัะฟะธัะบะฐ ัะฟัะฐะฒะฐ ะฒ ัะฟะธัะบะต ัะปะตะฒะฐ.
};
เบซเบกเบปเบโเปเบเบปเปเบฒโเบเบตเป. เบเบตเปเปเบกเปเบเบฅเบฐเบซเบฑเบเบเบปเบเบเปเบงเบเบเบญเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบฒเบกเบเบตเปเบชเบฑเบเบเบฒเปเบงเป, เบเบฝเบเปเบเปเบชเบญเบเบชเบฒเบกเบชเบฒเบ:
initWith:`sym`time`high`low`firstPrice`lastPrice`firstSize`lastSize`numTrades`volume`pvolume`turnover`avgPrice`avgSize`vwap`cumVolume!(`;00:00;0n;0n;0n;0n;0N;0N;0;0;0.0;0.0;0n;0n;0n;0);
aggCols:reverse key[initWith] except `sym`time;
rollColumns:`sym`cumVolume;
accumulatorCols:`numTrades`volume`pvolume`turnover;
specialCols:`high`low`firstPrice`firstSize;
selExpression:`high`low`firstPrice`lastPrice`firstSize`lastSize`numTrades`volume`pvolume`turnover!parse each ("max price";"min price";"first price";"last price";"first size";"last size";"count i";"sum size";"sum price";"sum price*size");
preprocess:?[;();`sym`time!`sym`time.minute;selExpression];
aggExpression:`high`low`firstPrice`lastPrice`firstSize`lastSize`avgPrice`avgSize`vwap`cumVolume!("row[`high]|inp`high";"row[`low]&inp`low";"row`firstPrice";"inp`lastPrice";"row`firstSize";"inp`lastSize";"pvolume%numTrades";"volume%numTrades";"turnover%volume";"row[`cumVolume]+inp`volume");
@[`aggExpression;specialCols;{"?[isFirst;inp`",y,";",x,"]"};string specialCols];
aggExpression[accumulatorCols]:{"row[`",x,"]+inp`",x } each string accumulatorCols;
updateAgg:value "{[aggTable;idx;inp] row:aggTable idx; isFirst_0=row`numTrades; .[aggTable;;:;]'[(idx;)each aggCols;(",(";"sv string[aggCols],'":",/:aggExpression aggCols),")]}"; / '
init:{
tradeAgg::0#enlist[initWith];
currTime::00:00;
currSyms::`u#`symbol$();
offset::0;
rollCache:: `sym xkey update `u#sym from rollColumns#tradeAgg;
};
roll:{[tm]
if[currTime>tm; :init[]];
rollCache,::offset _ rollColumns#tradeAgg;
offset::count tradeAgg;
currSyms::`u#`$();
};
addSyms:{[syms]
currSyms,::syms;
`tradeAgg upsert @[count[syms]#enlist initWith;`sym`time,cols rc;:;(syms;currTime),(initWith cols rc)^value flip rc:rollCache ([] sym: syms)];
};
upd:{[tblName;data] updMinute[data] each exec distinct time from data:() xkey preprocess data};
updMinute:{[data;tm]
if[tm<>currTime; roll tm; currTime::tm];
data:select from data where time=tm;
if[count msyms:syms where not (syms:data`sym)in currSyms; addSyms msyms];
updateAgg[`tradeAgg;offset+currSyms?syms;data];
};
เบเบฒเบเบเบปเบเบชเบญเบ
เปเบซเปเบเบงเบเปเบเบดเปเบเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบญเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เปเบซเปเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบเบฐเบเบงเบเบเบฒเบเปเบเบเบเปเบฒเบเบซเบฒเบ (เปเบชเปเบฅเบฐเบซเบฑเบเปเบเปเบเบฅเป service.q) เปเบฅเบฐเปเบเบซเบฒเบซเบเปเบฒเบเบตเป init:
q service.q โp 5566
q)init[]
เปเบ console เบญเบทเปเบ, เปเบฅเบตเปเบกเบเบปเปเบเบเบฐเบเบงเบเบเบฒเบ Q เบเบตเบชเบญเบเปเบฅเบฐเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบฑเปเบเบเปเบฒเบญเบดเบ:
h:hopen `:host:5566
h:hopen 5566 // ะตัะปะธ ะพะฑะฐ ะฝะฐ ะพะดะฝะพะผ ั
ะพััะต
เบเปเบฒเบญเบดเบ, เปเบซเปเบชเปเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบชเบฑเบเบเบฒเบฅเบฑเบ - 10000 เบเบดเปเบเปเบฅเบฐเปเบเบตเปเบกเบซเบเปเบฒเบเบตเปเปเบเบทเปเบญเบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบเบชเบธเปเบก. เปเบ console เบเบตเบชเบญเบ:
syms:`IBM`AAPL`GOOG,-9997?`8
rnd:{[n;t] ([] sym:n?syms; time:t+asc n#til 25; price:n?10f; size:n?10)}
เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบเบตเปเบกเบชเบฒเบกเบชเบฑเบเบเบฒเบฅเบฑเบเบเบตเปเปเบเปเบเบดเบเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเปเบฒเบเบเปเปเบเบฒเบเบเบญเบเบซเบฒเบเบงเบเบกเบฑเบเบขเบนเปเปเบเบเบฒเบเบฐเบฅเบฒเบ. เบเบฑเบเบเบฑเบ rnd เบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบเบชเบธเปเบกเบเบตเปเบกเบต n เปเบเบง, เบเปเบญเบเบเบตเปเปเบงเบฅเบฒเปเบเบเบเปเบฒเบเบเบฑเบเบเบฒเบ t เบซเบฒ t + 25 เบกเบดเบเบฅเบดเบงเบดเบเบฒเบเบต.
เบเบญเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบญเบเบชเบปเปเบเบเปเปเบกเบนเบเปเบเบซเบฒเบเปเบฅเบดเบเบฒเบ (เปเบเบตเปเบกเบชเบดเบเบเบปเปเบงเปเบกเบเบเปเบฒเบญเบดเบ):
{h (`upd;`trade;rnd[10000;x])} each `time$00:00 + til 60*10
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบงเบเบชเบญเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเปเบเบฒเบเบฐเบฅเบฒเบเปเบเปเบเบทเบเบเบฑเบเบเบธเบ:
c 25 200
select from tradeAgg where sym=`AAPL
-20#select from tradeAgg where sym=`AAPL
เบเบปเบเปเบเปเบฎเบฑเบ:
sym|time|high|low|firstPrice|lastPrice|firstSize|lastSize|numTrades|volume|pvolume|turnover|avgPrice|avgSize|vwap|cumVolume
--|--|--|--|--|--------------------------------
AAPL|09:27|9.258904|9.258904|9.258904|9.258904|8|8|1|8|9.258904|74.07123|9.258904|8|9.258904|2888
AAPL|09:28|9.068162|9.068162|9.068162|9.068162|7|7|1|7|9.068162|63.47713|9.068162|7|9.068162|2895
AAPL|09:31|4.680449|0.2011121|1.620827|0.2011121|1|5|4|14|9.569556|36.84342|2.392389|3.5|2.631673|2909
AAPL|09:33|2.812535|2.812535|2.812535|2.812535|6|6|1|6|2.812535|16.87521|2.812535|6|2.812535|2915
AAPL|09:34|5.099025|5.099025|5.099025|5.099025|4|4|1|4|5.099025|20.3961|5.099025|4|5.099025|2919
เบเบญเบเบเบตเปเปเบซเปเปเบฎเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเปเบซเบผเบเปเบเบทเปเบญเบเบญเบเบซเบฒเบงเปเบฒเบเปเบฅเบดเบเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเปเปเบกเบนเบเบซเบผเบฒเบเบเบฒเบเปเบเบเปเปเบเบฒเบเบต. เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเบเบทเบญเบเบเปเบฒเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบเปเบฅเบเบฐเบเบฒเบเบญเบฑเบเปเบเบเปเบเบฑเบ 25 milliseconds. เบเบฑเปเบเบเบฑเปเบ, เบเบฒเบเบเปเบฅเบดเบเบฒเบเบเปเบญเบ (เปเบเบเบชเบฐเปเบฅเปเบ) เปเบซเบกเบฒเบฐเบขเปเบฒเบเบซเบเปเบญเบ 20 milliseconds เบเปเปเบเบฒเบเบเบฑเบเบเบธเบเปเบเบทเปเบญเปเบซเปเบเบนเปเปเบเปเปเบเปเปเบงเบฅเบฒเปเบเบเบฒเบเบฎเปเบญเบเบเปเบเปเปเบกเบนเบ. เบเบฐเบฅเบธเบเบฒเปเบชเปเบเปเปเปเบเบเบตเปเปเบเบเบฐเบเบงเบเบเบฒเบเบเบตเบชเบญเบ:
tm:10:00:00.000
stressTest:{[n] 1 string[tm]," "; times,::h ({st:.z.T; upd[`trade;x]; .z.T-st};rnd[n;tm]); tm+:25}
start:{[n] times::(); do[4800;stressTest[n]]; -1 " "; `min`avg`med`max!(min times;avg times;med times;max times)}
4800 เปเบกเปเบเบชเบญเบเบเบฒเบเบต. เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบเบฐโเบเบฒโเบเบฒเบกโเปเบฅเปเบโเบเบฑเปเบโเบเปเบฒโเบญเบดเบโเบชเปเบฒโเบฅเบฑเบ 1000 เปเบเบงโเปเบโเบเบธเบเป 25 millisecondsโ:
start 1000
เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเปเบญเบ, เบเบปเบเปเบเปเบฎเบฑเบเปเบกเปเบเบเบฐเบกเบฒเบเบชเบญเบเบชเบฒเบกเบกเบดเบฅเบดเบงเบดเบเบฒเบเบตเบเปเปเบเบฒเบเบเบฑเบเบเบธเบ. เบเบฑเปเบเบเบฑเปเบเบเปเบญเบเบเบฐเปเบเบตเปเบกเบเปเบฒเบเบงเบเปเบเบงเปเบเบฑเบ 10.000 เบเบฑเบเบเบต:
start 10000
เบเบปเบเปเบเปเบฎเบฑเบ:
min| 00:00:00.004
avg| 9.191458
med| 9f
max| 00:00:00.030
เบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ, เบเปเปเบกเบตเบซเบเบฑเบเบเบดเปเบชเบ, เปเบเปเบเบตเปเปเบกเปเบ 24 เบฅเปเบฒเบเบชเบฒเบเบเปเปเบเบฒเบเบต, 400 เบเบฑเบเบเปเปเบงเบดเบเบฒเบเบต. เบชเปเบฒเบฅเบฑเบเปเบงเบฅเบฒเบซเบผเบฒเบเบเบงเปเบฒ 25 เบกเบดเบเบฅเบดเบงเบดเบเบฒเบเบต, เบเบฒเบเบเบฑเบเบเบธเบเบเปเบฒเบฅเบปเบเบเบฝเบเปเบเป 5 เปเบเบทเปเบญ, เบเบฒเบเบปเบเบเบทเปเบเปเบกเบทเปเบญเบเบฒเบเบตเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบ. เปเบซเปเปเบเบตเปเบกเปเบเบฑเบ 100.000:
start 100000
เบเบปเบเปเบเปเบฎเบฑเบ:
min| 00:00:00.013
avg| 25.11083
med| 24f
max| 00:00:00.108
q)sum times
00:02:00.532
เบเบฑเปเบเบเบตเปเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเป, เบเบฒเบเบเปเบฅเบดเบเบฒเบเปเบเบทเบญเบเบเปเปเบชเบฒเบกเบฒเบเบฎเบฑเบเบกเบทเบเบฑเบเปเบเป, เปเบเปเบขเปเบฒเบเปเบเบเปเปเบเบฒเบกเบกเบฑเบเบเปเปเบชเบฒเบกเบฒเบเบขเบนเปเปเบเป. เบเบฐเบฅเบดเบกเบฒเบเบเปเปเบกเบนเบเบเบฑเปเบเบเปเบฒเบง (240 เบฅเปเบฒเบเปเบเบงเบเปเปเบเบฒเบเบต) เปเบกเปเบเบกเบตเบเบฐเบซเบเบฒเบเปเบซเบเปเบเบตเปเบชเบธเบ; เปเบเบเปเบฅเบฐเบเบตเบเบฑเปเบเบเปเบฒเบง, เบกเบฑเบเปเบเบฑเบเปเบฅเบทเปเบญเบเบเบปเบเบเบฐเบเบดเบเบตเปเบเบฐเปเบเบตเบเบเบปเบง clones เบซเบผเบฒเบ (เบซเบผเบทเปเบกเปเบเบฐเบเบฑเปเบเบซเบผเบฒเบเบชเบดเบ clones) เบเบญเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ, เปเบเปเบฅเบฐเบเบฐเบเบงเบเบเบฒเบเบเบฝเบเปเบเปเบเบฒเบเบชเปเบงเบเบเบญเบเบเบปเบงเบญเบฑเบเบชเบญเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบปเบเปเบเปเบฎเบฑเบเปเบกเปเบเบเบฐเบเบฑเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบชเบฒเบเบตเปเบเบตเบเบงเบฒเบกเบซเบกเบฒเบเบเบตเปเบชเบธเบกเปเบชเปเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเบเบปเปเบเบเป.
เบเปเบฒเบเบฒเบกเบญเบฒเบเบเบฐเปเบเบตเบเบเบทเปเบเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบเปเบงเบฅเบฒเปเบเบตเบเปเบเบเปเปเบเบปเบเบเบฑเบเบเบฐเบซเบเบฒเบเบเบญเบเปเบเปเบฅเบฐเบเบฒเบเบเบฑเบเบเบธเบ. เปเบซเบเบเบปเบเปเบกเปเบเบงเปเบฒเบซเบเปเบฒเบเบตเปเบซเบปเบเบเบปเบงเบเบปเบงเบเบดเบเปเบกเปเบเบซเบเปเบฒเบเบตเป C, เปเบเบดเปเบเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบเบเปเบงเบฒ updateAgg. เปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเบฒเบเบเบฑเบเบเบธเบเบเบตเปเปเบเปเบเบญเบ (เบเบฐเบกเบฒเบ 10.000), updateAgg เบฎเบญเบเปเบเบเบฒเบเบเบญเบเบกเบฑเบเปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบงเบฅเบฒเบเบฐเบเบดเบเบฑเบเบเบญเบเบกเบฑเบเบเปเปเบเบถเปเบเบเบฑเบเบเบฐเบซเบเบฒเบเบเบฒเบเบเบฑเบเบเบธเบ. เบกเบฑเบเปเบกเปเบเบเปเบญเบเบเบฑเปเบเบเบญเบเปเบเบทเปเบญเบเบเบปเปเบ Q เบเบตเปเบเปเบฅเบดเบเบฒเบเบชเบฒเบกเบฒเบเบเปเบญเบเบเบฐเบฅเบดเบกเบฒเบเบเปเปเบกเบนเบเบเบฑเปเบเบเปเบฒเบงเปเบเป. เบเบตเปเบเบตเปเปเบซเปเปเบซเบฑเบเปเบเบดเบเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบงเปเบฒเบกเบฑเบเบกเบตเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเปเบเบงเปเบเบเบตเปเบเบฐเปเบฅเบทเบญเบเปเบญเบปเบฒเบชเบนเบเบเบฒเบเบเบดเบเปเบฅเปเบเบตเปเบเบทเบเบเปเบญเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเปเปเบกเบนเบเปเบซเบเป. เบญเบตเบเบเบธเบเบซเบเบถเปเบเปเบกเปเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเบเบตเปเบเบทเบเบเปเบญเบเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ. เบเปเบฒเบเปเปเบกเบนเบเบเปเปเปเบเปเบเบทเบเปเบเบฑเบเปเบงเปเปเบเบเบฑเบเบซเบผเบทเบเปเปเปเบเปเบเบทเบเบเบฑเบเบฅเปเบฒเบเบฑเบเบเบฒเบกเปเบงเบฅเบฒ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบธเปเบเปเบเบตเบเบเบฑเบเบชเบดเปเบเบเบฑเปเบเบเปเบฒเบงเปเบเบฑเบ TLB cache miss - เบเบฒเบเบเบฒเบเบเบตเปเบขเบนเปเบซเบเปเบฒเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเปเบ cache เบเบตเปเบขเบนเป processor. เบเบฒเบเบเบญเบเบซเบฒเบเบตเปเบขเบนเปเปเบเปเปเบงเบฅเบฒเบเบฐเบกเบฒเบ 30 เปเบเบปเปเบฒเบเปเบฒเบเปเปเบชเปเบฒเปเบฅเบฑเบ, เปเบฅเบฐเบเปเบฒเบเปเปเบกเบนเบเบเบฐเปเบเบเบเบฐเบเบฒเบ, เบกเบฑเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบซเปเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเปเบฒเบฅเบปเบเบซเบผเบฒเบเบเบฑเปเบ.
เบชเบฐเบซเบฅเบธเบ
เปเบเบเบปเบเบเบงเบฒเบกเบเบตเป, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเปเบฒเบเบฒเบเบเปเปเบกเบนเบ KDB + เปเบฅเบฐ Q เปเบกเปเบเปเบซเบกเบฒเบฐเบชเบปเบกเบเปเปเบเบฝเบเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเบเบฐเบซเบเบฒเบเปเบซเบเปเปเบฅเบฐเปเบเบปเปเบฒเปเบเบดเบเปเบเปเบเปเบฒเบเปเบเบเบเปเบฒเบเบเบฒเบเปเบฅเบทเบญเบ, เปเบเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเปเปเบกเบนเบเบเบตเปเบชเบฒเบกเบฒเบเบเปเบญเบเบซเบผเบฒเบเบฎเปเบญเบเบฅเปเบฒเบเปเบเบง / gigabyte เบเบญเบเบเปเปเบกเบนเบเปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบ. เบเบฐเบเบงเบเบเบฒเบ Q เบเบฝเบง. เบเบฒเบชเบฒ Q เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบฐเบเบดเบเบฑเบเบขเปเบฒเบเบเปเบฒเบเบเบฒเบเปเบฅเบฐเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบญเบ algorithms เบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเปเปเบกเบนเบเปเบเบทเปเบญเบเบเบฒเบเบฅเบฑเบเบชเบฐเบเบฐเบเบญเบ vector เบเบญเบเบกเบฑเบ, เบเบปเบงเปเบเบเบฒเบชเบฒเบเบฒเบชเบฒ SQL เปเบฅเบฐเบเบธเบเบเบตเปเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบเบซเบผเบฒเบเบเบญเบเบซเบเปเบฒเบเบตเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบ.
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบชเบฑเบเปเบเบเบงเปเบฒเบเปเบฒเบเปเบเบดเบเบเบตเปเปเบกเปเบเบเบฝเบเปเบเปเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบชเบดเปเบเบเบตเป Q เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป, เบกเบฑเบเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบดเปเบชเบเบญเบทเปเบเปเปเบเบฑเปเบเบเบฑเบ. เบเบปเบงเบขเปเบฒเบเปเบเบฑเปเบ, เปเบเปเบเบเบญเบ IPC เบเบตเปเบเปเบฒเบเบเบฒเบเบเบตเปเบชเบธเบเบเบตเปเบเบฐเบฅเบปเบเบฅเปเบฒเบเบเบญเบเปเบเบเบฅเบฐเบซเบงเปเบฒเบเบเบฐเบเบงเบเบเบฒเบ Q เบชเปเบงเบเบเบธเบเบเบปเบเปเบฅเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบงเบกเปเบญเบปเบฒเบซเบผเบฒเบเบฎเปเบญเบเบเบฐเบเบงเบเบเบฒเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบเบปเปเบฒเปเบเปเบเปเบเบทเบญเบเปเบฒเบเบเบฝเบง, เปเบเบดเปเบเบชเบฒเบกเบฒเบเบเบฑเปเบเบขเบนเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเบผเบฒเบเบชเบดเบเบซเบเปเบงเบเปเบเบชเปเบงเบเบเปเบฒเบเปเบเบญเบเปเบฅเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com