Multi-Shader vs Single-Shader Material Performance?

I think I know the answer to this in theory but I’d like to sanity-check with the experts here.

How much a performance difference should multiple shader nodes make? I mean specifically the closure nodes with BSDF or Shader outputs, not procedural textures etc.

The use case I’m looking at is using painted or generated masks to mix between multiple materials (poor man’s Substance Painter, more or less). I’m thinking best practice would probably be to define the properties of the materials and use the masks to plug those properties into a single shader node (most likely Principled). But it is much, much easier to set up a workflow where the mask drives a mix shader, especially when the individual materials have their own sub-masks (cavity maps, textures etc) driving properties such as roughness, metalness, etc.

For instance a painted metal object could have a “dirty crevices” material, a “scratched metal” material and a “matte paint” material, each set up as a node group with a Principled or other BSDF output. I can use an image mask to define the painted areas, and even combine it with pointiness to also wear the paint away on sharp edges. Then it’s very simple to use pointiness again to overlay dirt in the crevices. If I had another material representing “spattered mud” I could simply bring that nodegroup in and mix it with another mask. But the drawback is that each material introduces an additional shader/closure, and in theory a performance hit.

It’s much more complex to set up a workflow where the masks blend between the color, roughness, metalness, etc. of each sub-material and feed them correctly into a single shader node. This is fine for a set of predefined material sets, for instance “scratched metal with paint and dirt” but much harder to add new “layers” on the fly since they’d have to be mixed in separately for each value. “scratched metal with paint, dirt, mud, and dust” isn’t just a matter of layering on the mud and dust as above but rather routing values for these new materials (and the factors driving them) through a complex node tree.

So ultimately the question is how large is the performance hit for each new shader? Some very rough thumbnail tests show anywhere from 1.05 to 1.13 of single-shader render time for mixing in an additional shader. Is that reasonable to use as a benchmark?

Of course this also brings up a tangential question: is a material that varies between, say, 0 roughness and 0.5 roughness based on a mask actually equivalent to a 0 roughness material mixed with a 0.5 roughness material based on a mask?