In my opinion, this is a common trade-off with gSOAP. Static arrays give better performance but do not produce WSDL that is fully WS-I compliant due to the SOAP-ENC:Array dependency, which many validators reject. Using dynamic arrays (with __size and *ptr) keeps your WSDL clean and compliant but adds overhead. One solution is to use dynamic arrays in the interface (for WSDL compliance), but internally convert them to fixed-size arrays for processing — a kind of wrapper approach. It's not perfect, but it gives you the best of both worlds.