A: Yes, much effort has been put into optimizing the calculation speed of ODEON over the years. It is not possible to mention all techniques implemented - here is just a few examples.
Odeon uses a dynamic sized 3D-cubenet in which it is stored, which surfaces intersect which cube in the cube-net, therefore Odeon only has to analyse a few of the surfaces in a room for each wall /ray collision instead of all surfaces.
From version 8.5 and up, ODEON make use of CPU specific instructions (MMX, SSE, SEE2…) in order carry out multiple calculations in one operation (e.g. multiplying x, y and z of a coordinate with a constant in just one operation instead of three). So indeed parallel processing is performed. Image sources are detected by use of ray-tracing. Rays will only detect image sources which are likely to be valid whereas the traditional image source method requires an enormous amount of image sources to be calculated of which only a few will be valid. Odeon keeps track that a given image source reflection is only added once to the impulse response by use of a tree data structure (image source tree). Therefore there are no cases where an image source is included twice in an impulse response as is the case for the Cone tracing method.
Apart from the above, the ‘Late-ray’ method is capable of producing many reflections at a receiver with just a few rays. For a description of the calculation method please see the ODEON manual.