kdb:短语和性能在哪里

kdb:短语和性能在哪里,kdb,Kdb,说1应该比2快 这是一个一般性的说法——当他们说它应该更快时,他们的意思是在大多数实际情况下。根据数据的形状,总会出现某些方法不能更快的边缘情况 在您的例子中,由于第一个过滤器并没有将数据集大量减少(它将数据集减半),所以在第二个过滤器之前将第二列“减半”的开销恰好大于直接将第二个过滤器应用于整个第二列(毕竟kdb在向量操作方面非常快) 例如,如果您的第一个过滤器将数据集减少了很多,那么您将看到更多的速度提高,因为应用于较小集合的第二个过滤器减少的开销更为重要: q)\t select from

说1应该比2快


这是一个一般性的说法——当他们说它应该更快时,他们的意思是在大多数实际情况下。根据数据的形状,总会出现某些方法不能更快的边缘情况

在您的例子中,由于第一个过滤器并没有将数据集大量减少(它将数据集减半),所以在第二个过滤器之前将第二列“减半”的开销恰好大于直接将第二个过滤器应用于整个第二列(毕竟kdb在向量操作方面非常快)

例如,如果您的第一个过滤器将数据集减少了很多,那么您将看到更多的速度提高,因为应用于较小集合的第二个过滤器减少的开销更为重要:

q)\t select from t where a<10,b>500;
263
q)\t select from t where (a<10) and b>500;
450

q)\t select from t where a=950,b>500;
208
q)\t select from t where (a=950) and b>500;
422
N:100000000;
t:([]a:N?1000;b:N?1000;c:N?1000)
\t select from t where a>500,b>500;        / ~500ms
\t select from t where (a>500) and b>500;  / ~390ms
q)\t select from t where a<10,b>500;
263
q)\t select from t where (a<10) and b>500;
450

q)\t select from t where a=950,b>500;
208
q)\t select from t where (a=950) and b>500;
422
q)`a xasc `t;
q)\t select from t where a=950,b>500;
1
q)\t select from t where (a=950) and b>500;
428