When designing models in Promela, what are the design trade-offs for channels when there are a many different types of messages being sent?
Many examples in documentation use a simple case with something like this
mtype { M1, M2, M3 }
chan req = [0] of { mtype, chan, byte};
However in practice some models may have processes that handle a wide variety of different message types, each of which have a unique set of parameters.
So there seems to be a design decision between channels that can represent the parameters of a variety of message types:
mtype { M1, M2, M3 }
chan req = [0] of { mtype, chan, byte, int, byte, etc...};
and channels specific to each message type
chan req1 = [0] of { chan, byte };
chan req2 = [0] of { chan, int };
chan req3 = [0] of { chan, byte, int};
I'm interested in understand any performance benefits to one design over the other, and what is considered best practices.