Sqrt + code improvement

Hi everyone,
I’m writing a code in Hydra for virtual sources positioning in 3D space, this means that for each virtual sound source (16 total) I have a X,Y,Z coordinate and then I have to calculate the distance from this point to a matrix, the single part of the sqrt(x^2+y^2+z^2) is the following:

root[0] = (float)((((modpos[f][c][0] + speakpos[s][0]) - srcpos[src][0]) * ((modpos[f][c][0] + speakpos[s][0]) - srcpos[src][0])) + (((modpos[f][c][1] + speakpos[s][1]) - srcpos[src][1]) * ((modpos[f][c][1] + speakpos[s][1]) - srcpos[src][1])) + (((0 + speakpos[s][2]) - srcpos[src][2]) * ((0 + speakpos[s][2]) - srcpos[src][2])));

Q_rsqrt.Invoke(root, length, value);

The problem is only this two lines (first one the squares and second the sqrt which I already implemented in RLP) is consuming 80% of the total execution time of the program. This distance calculation is inside a loop of 65536 executions. Implementing the sqrt in RLP only improved 1s the speed of the algorithm; with sqrt in c# it is around 6s, with sqrt RLP is 5s and the objective is to execute this algorithm in 125ms.

I’d really appreciate some advices and tips. Thanks in advance!

Calling RLP 600000 times is not a good idea. The overhead will make it slow.

You need to collect your data and pass to RLP to do the calculation all at once. It will take 0.1 sec instead of 6 or less

Thanks, I’ll try this and post the results!!