Je ne vais pas trop m'aventurer sur le pourquoi, mais si je peux tenter une supposition, ce serait que si les macro-programmes sont effectivement compilés à l'avance, chargés une fois en mémoire au moment du 1er appel, je ne pense pas qu'ils soient conservés indéfiniment en mémoire après utilisation. Donc il se pourrait que SAS perde du temps à relire la version compilée de %recherche, de temps en temps. Idem pour les macro-variables : elles sont en mémoire vive, jusqu'à saturation de l'espace qui les contient (la table des symboles). Il y a même une option SAS (MSYMTABMAX) pour indiquer la taille de cet espace, au-delà de laquelle les macro-variables sont écrites sur le disque. S'il y en a beaucoup, on perd à nouveau du temps.
Mais sans doute que de meilleurs spécialistes de la performance des codes SAS pourraient nous en dire plus.
Partager