使用Q对大型集合进行排序

时间:2015-02-17 00:17:29

标签: kdb q-lang

我想用Q对大量数字进行排序,而不将任何中间结果保存到表中。如何在不在每次迭代中创建列表副本的情况下对内存中的列表进行排序?我可以更新现有的li:并修改其元素吗?

1 个答案:

答案 0 :(得分:1)

Q不会在一个排序中“持久”中间结果...我认为你的意思是由于复制导致的大量内存开销?

对于ascdesc,你无法控制内存,没有以更有效的内存方式将它们重写为c函数。

我想如果你在c中写一个稀疏桶类型的排序,你在每个元素中将数字放入磁盘上的稀疏分块列表而不是内存中。然后删除内存列表,然后从磁盘读取。听起来很慢。

我看不出你在q中怎么做...甚至迭代一些向量a并在创建排序列表时迭代删除它是一个问题,因为你还在制作一个删除前复制。