重複を排除するために使用するdistinctのPerformance
・数値のリストのリスト
floatのdistinctは非常に遅いので避けるべき。
通常floatをdistinctするケースは無いが、0.1刻みのデータや意図せずfloatになってしまっているケースもあるので注意
q) L: `float$ 10000000?10000i q) \t distinct L 305 q) L: 10000000?10000i q) \t distinct L 29
リストのリストをdistinctするときにより影響が大きい
q)L: til 5 q)LL: do[5; L cross L] q)LL 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 ... q)count LL 15625 q)LLf: 0.5*10000?LL / floatのListを作成 q)LLf 0.5 0 0 1 0 1 0 1.5 0.5 2 1.5 1 1.5 1 2 1 1 1.5 q)\t distinct LLf / 要素が10000で1sもかかる 965 q)count distinct LLf 7448 q)\t 0.5* distinct `int$2*LLf / castの時間を加えても100倍早い 8 q)count distinct `int$2*LLf 7448
・Join key
上記と同様に、valueとしてfloatのリストが入っているテーブル同士をjoinする場合、
floatのリストをkeyにしてjoinをすると非常に遅い。
q) meta t / listをkeyにして結合したい c | t f a ----| ----- list| F ... | q) count t / 47293j q) t list .. ------------------.. 1 2 3 4 5 6 7 .. 1 2 3 4 5 6.5 6.5 .. q) \t (t同士をlistをkeyに自己結合) 200230j q) \t (t同士をintに変換したlistをkeyに自己結合) 135j