Moien Matthias,

ist nur eine Vermutung und vielleicht sogar Nonsens (von daher möge man mich bitte ggf. berichtigen), aber ich vermute, dass es da einen Overhead beim Aufruf der MI Funktion aus der ILE Runtime heraus gibt.

Wir hatten dasselbe Spiel mal, als unser Pfeifendeckel-Softwarelieferant versucht hatte, die Performance seines in komplett monolithischem OPM Cobol geschriebenen Softwarepakets zu verbessern, indem er einfach nur diverse Programme 1:1 von OPM in ILE umgesetzt hat (also nur minimalste Code-Anpassungen, um das entsprechende Programm in ILE statt OPM compilieren zu können). Das hatte zur Folge, dass jedes Mal, wenn ein ILE Programm aus einem OPM Programm heraus per dynamischem Call aufgerufen wurde, die ILE Runtime aktiviert und initialisiert werden musste, insofern sie nicht schon im Call Stack vorhanden war => riesen Performanceeinbussen, klassisches Eigentor geschossen.

Ich vermute daher, dass etwas Ähnliches in deinem Beispielprogramm vonstatten geht. Sieht mir so aus, als würde da jedes Mal etwas für die Ausführung der MI Funktion initialisiert und danach wieder finalisiert/"zugemacht", d.h. es wäre in diesem Fall gar nicht die _POWER Funktion an sich, die langsam ist, sondern das Drumherum.

Änder mal zum Test dein Programm und schreib die Iteration der _POWER Funktion im aufgerufenen MI Programm statt im Cobol, dann wird mans ja sehen.

Grüsse

bateau