我有2个已排序的列表x
和y
,我想查找有多少x
小于y
的运行计数。以下是以下工作:
x:10*til 3; / 0 10 20
y:til 30; / 0 1 2 ... 30
sum {x < y}[;y] each x
q) 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
但我怀疑使用each
并不是最有效的做事方式。考虑到我的x
,y
最终可能会达到数千万件的顺序,有更快的方法吗?
答案 0 :(得分:2)
如果函数太贵,可以考虑使用从属执行并行执行。我的例子使用了8个奴隶。
>q -s 8
q)x:10*til 10000
q)y:til 100000
q)\ts sum y>/:x
7200 1312358576
q)\ts sum(y>)peach x
5298 1312424112
q)(sum y>/:x)~sum(y>)peach x
1b