Dein Problem ist hier nicht ILERPG sondern die statische Definition der Schnittstelle (dein XSD-Schema).

Wenn du nun hier eine dynamische Struktur definieren könntest muss doch irgendwo die Anzahl der Positionen übergeben werden, sonst ist es keine dynamische Struktur.

In ILERPG wird ja nur ein Pointer übergeben, so dass du nur die Anzahl der Positionsstrukturen auswerten musst um eben auf nur diese Adressen zuzugreifen.

Mittels Pointer und Pointerarritmetik kann man die DS auch sehr variabel bearbeiten.

Wobei ich immer noch nicht glaube, dass die Performance von der Größe der Struktur abhängig ist.

Vielleicht verbrät dein Programm ja die Zeit irgendwo unnötigerweise.
Andere Web-Services arbeiten ja auch bei großen Datenmengen nur im Sekundenbereich.
Gib mal eine Logdatei mit Timestampwerten zwischen Aufruf und Return aus, oder wie ermittelst du die Zeiten?