The actual ray traversal occurs in parallel with graphics in a separate part of the chip, so you don’t really pay for that unless you over-utilize it and create a sync bottleneck. It does have to run a shader to check if a ray-bounding box hit is also a ray-triangle hit, and then of course it has to shade the sample. That is the real cost. And those bounds are theoretically pretty tight, it breaks your meshes into little dense chunks of triangles with their own bounding boxes in the hierarchy. The exact algorithm used for that is implementation specific, not defined by the spec, so it could vary and we don’t know the exact details. But the BVH Nvidia uses seems to keep the triangle intersection test count pretty manageable, judging from how well games like Battlefield run with high geometric complexity and large maps.
It won’t outperform a single planar reflection in most cases, because a zbuffer with depth sorting is still going to be more efficient for minimizing shading sample count, and planar reflections have a view frustum that is at most as big as that of the main camera, so the potentially visible set is smaller, with less memory that might need to be accessed. Where ray tracing wins hands down is for multiple reflection planes, which really don’t impact the performance at all (as far as the gpu is concerned, a second plane is just a different surface normal) unless you want recursive tracing. And of course it is the only truly general way to handle non-planar reflections, which again don’t really add to the cost significantly.
On the other hand, you can control exactly which pixels generate reflection rays. If you have a street with a lot of little puddles, ray tracing will be pretty efficient, because objects not directly visible in those puddles do not need to be considered in visibility testing. With planar reflections, those would have to be transformed and then rejected by a stencil buffer. If you have two puddles on opposite corners of the screen, planar reflections has to submit draw calls for objects spanning the entire screen.
You also have fine grained control over sample density. Maybe for rough surfaces you only trace one ray for every 2x2 pixel block, using the normal from one of those pixels at random and then accumulate using temporal antialiasing for instance. UE4 already does this sort of thing for some expensive effects like capsule shadows.
In essence, you get the performance scalability and flexibility of screen space reflections with the accuracy of planar reflections, at a higher base cost. If I were doing a flat mirror on a wall, I would probably still use planar reflections as it is going to create a tight fit reflection frustum, and there is no reason you can’t use both, just as you can use planar and screen space together.