Property transfer testing

I having been playing around with the property transfer operator and i love it so far. It makes doing certain things a lot easier. I have however noticed that it seems to be unusually slow when calculating with lots of particles. (1 million +) I looked at my cpu usuage and it is very under utilized, usually only getting the occasional spike. 1-2 threads seem to get hit harder than the rest but not by a lot. It seems to use more cpu right at the start but then it quickly tapers off so my cpu is only at about 5-10% for 80% of the time with the occasional spike to 90-100%. The spikes are very consistent. 

I also set up a neighbor test with the same radius as the transfer operator and it was much faster, not sure if they operate in the same way as each other though.
Is there room for optimizations/better resource utilization? I understand this is just a first implementation so it might be rough around the edges in code.


P.S. The scene is the same one i posted in the color changing thread. I just cranked up the particle count.

Attached Files Thumbnail(s)
It's already optimized quite thoroughly...for some things there is not really a way to squeeze more speed out of it. Also not shown in the profiler is the time to build the kdtree used to do the neighbor search, which is necessarily single-threaded. Generally the smaller your radius is, the faster it will run.
Ah ok, thanks for the update, i suspected part of it might be single threaded. I suppose raw ghz speed would be better in this situation than many cores. In any case i will still keep tinkering with it. Thanks again for this feature! Big Grin
Just a quick question. Does the transfer operator respect the sub frames? Is so, perhaps an ignore sub frames flag in the operator? Another option could be to cap the amount of neighbors it can accumulate per particle. These could help speed things up in certain situations. Smile

Forum Jump: