Each of the four algorithms is different, and not all of them will parallelize linearly, but for large meshes these "flushing" operations begin to become noticeable compared to other multithreaded code. For example, flushing visibility to vertices and edges after a change to faces became 3.75x faster, from 90 to 24 ms. Also avoid duplicating selection interpolation logic, use the attribute API instead.