#1
|
|||
|
|||
Mejora rendimiento por procesam. paralelo
Hola a todos,
Estoy tratando de optimizar el codigo de un programa muy pesado y que no es posible lanzar en fondo. He realizado algunas mejoras, incuido el lanzamiento de varios select en tareas paralelas, pero aun asi se pasa de tiempo. He pensado tambien en paralelizar un bloque de performs que se hacen dentro de un loop a una tabla interna, dividiendo dicha tabla en bloques mas pequeños y lanzando en paralelo los performs para dichos bloques, pero el problema es que tal como lo hago (con un CALL FUNCTION ... AT NEW TASK) pierdo la referencia de todas las variables del programa original y ademas a dicha funcion por el tipo de funcion que es, solo puedo pasar tablas como parametros. Alguien conoce como podria realizar este procesamiento en paralelo con un call fuction o con otro metodo distinto ?? Gracias Saludos. |
#2
|
|||
|
|||
Mirate estas instrucciones....creo que es esto lo que necesitas:
CALL FUNCTION func ...STARTING NEW TASK task name PERFORMING form ON END OF TASK y en ese form la siguiente sentencia RECEIVE RESULTS FROM FUNCTION func. Additions: 1. ... KEEPING TASK 2. ... IMPORTING p1 = f1 ... pn = fn 3. ... TABLES p1 = itab1 ... pn = itabn 4. ... EXCEPTIONS except1 = rc1 ... exceptn = rcn Para pasar los parametros por valor tienes que marcar el flag "Transportar valores" en tu funcion. se37->pestaña IMPORT (segundo flag). Un saludo Úlima edición por sap2006 fecha: 18/07/07 a las 16:42:22. |
#3
|
|||
|
|||
Mejora rendimiento ...
Gracias por la respuesta.
Tal como comentas, esa es la instruccion que he estado utilizando hasta ahora, pero unicamente pasandole tablas como parametros porque no me dejaba importar otro tipo de parametros. Probaré con lo que me has dicho del import para ver si era por eso, y le puedo pasar el resto de variables que hacen falta para que me funcionen bien los paralelos. Un saludo. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|