Con esas premisas es dificil responder claramente.
Para esto lo mejor es armar un log, es decir, grabar en un archivo algo como:
Código:
Entrando en procedimiento tal y cual
Saliendo del procedimiento tal
De esa forma puedes averiguar, si unos eventos o procedimientos, estan llamando a otros con demasiada frecuencia, y optar por diseñar conceptualmente de otra forma esa tarea.
Ya que intuyes que puede venir por el Datamodule, empieza añadiendo trazas a esa parte del programa.
Saludos