Since we moved to RecFusion 220 from 136, we have seen in our application a huge performance loss (around x3, from 22 fps to 7fps on the same hardware, with three Orbbec Astra S sensors). The only code that has changed is the one related to scanning and reconstruction (basically, the RecFusion part). I managed to track down from where exactly this difference comes, and it is the
On RecFusion 220,
readImage() for each sensor takes around
30 ms. However, on RecFusion 136 with three sensors only one sensor takes around
30 ms while the other two takes
<1ms. Not surprisingly, if I use only two sensors, then one takes around
30 ms while the other
<1ms. Finally, one sensor alone takes around
30 ms. From this behaviour, it seems that data from all three sensors are obtained in parallel. But is it possible from the RF136/OpenNI2/driver sides? What has changed between RF 136 and 220 that we could potentially observe such behaviour?
Example measurements for RF 136:
Example measurements for RF 220:
To once again test this behaviour with a simpler code I have created this small project: https://github.com/iniphy/recfusion-measure-read-images. As you can see, the code for RF 136 and RF220 differs minimally, but the timing is vastly different.
Could you guide me in getting to the bottom of things and the possible reasons for such behaviour? Thanks!