On Sunday, September 21, 2014 03:02:38 PM Hans W Borchers wrote:
> If one gets the data as 1000x3 matrix, should one really first transpose
> the
> matrix and then apply a distance function on 3x1000? I don't think so.

It depends on the coming algorithm. 1000 points is not very much; the whole 
thing would fit into L1 cache, and so for 1000 points there's no incentive. But 
change that to 10^5 points, so the total computational cost is 10^10, and you 
could get an 5-10 fold speedup even with the cost of that transposition. When 
it comes to performance, cache is a huge consideration, and an O(N) reordering 
is totally worth it for an O(N^2) algorithm.

Of course, if you're using the Euclidean distance, you can do it using BLAS 
matrix multiplication (with some loss in precision), and BLAS already worries 
about cache for you. So in that particular case, with that particular 
algorithm, it wouldn't be necessary. But basically any other metric (or if you 
are worried about that loss of precision and want to use the higher-precision 
"naive" algorithm), you'll want the points arranged along columns.

--Tim

Reply via email to