Create planar intersections between two objects

I struggled for quite a while on how to take two intersecting objects and essentially truncate each object at the plane of intersection. What I have come up is rather convoluted and extremely slow. Is there an easy way to achieve what I have done in these screenshots? Right now I’m finding the median point of intersection for each object, placing a large cylinder aligned with one face at the intersection, then boolean differencing. Rinse and repeat for the other side. When I do this for many objects it is extremely slow.