|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Membre éclairé
![]() statisticien Inscription : mai 2011 Messages : 212 ![]() |
Bonjour
Suite aux discussions d'il y a quelques semaines sur la meilleur façon de faire des jointure, je me livre en ce moment à des expérimentations de performance des différentes méthodes dont on avait parlé. Pour cela je réalise des mesures répétées sur le temps d'exécution des différentes méthodes. Je m'attendais à des résultats plus ou moins constants à méthode donnée ET fichiers donnés. Hors je m'aperçois que ce n'est pas vraiment toujours le cas. Par exemple pour une méthode donnée je lance 7 fois de suite successives la même exploitation et relève les temps d'exécution via une macro. Et la variabilité dans certains cas me semble énorme. Je vous livre quelques résultats pour illustrer mes propos Citation:
D'autre fois un premier voir un deuxième temps "mauvais" puis des temps meilleurs dans un rapport 2, 5 voir parfois 10 fois inférieurs par rapport au premier essai Plus rarement ce sera pas le 1er ou le 2eme mais le 5eme par exemple Dans d'autres cas très rares, il m'est arrivé d'avoir disons 2 secondes pour le premier temps de réalisation et ensuite 6 temps de 16 secondes de façon tout aussi incompréhensible. J'imagine bien que les processus systèmes concurrents à SAS peuvent rajouter quelques secondes de temps en temps mais là surtout pour des méthodes qui requièrent plusieurs minutes passer de 3mn à 15 mn ou l'inverse pour faire exactement la même chose ça fait beaucoup ! Ma question : Existe t il des façons de paramétrer SAS ou bien windows ou les deux en même temps pour éviter ces problèmes de forte variabilité des temps d'exécutions au pour un même code (+ même fichiers). Bref pour "stabiliser" le comportement de SAS ? Car sans ça et en exagérant un peu tout effort d'optimisation de code me semble un peu vain Je rajoute que pendant les tests, l'activité de l'ordinateur est entièrement dédié au test donc sans autre application s'exécutant de façon concurrente. |
|
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Géraldine CADE DESCHAMPSSupport Clients SAS (France et Europe) Inscription : février 2010 Messages : 62 ![]() |
Bonjour,
Tout d'abord, quid des données : s'agit-il de données SAS se trouvant sur la même machine, ou bien de données DBMS, peut-être sur une autre machine ? De manière générale, des options peuvent être ajustées. La configuration de SAS pour de meilleures performances est expliquée dans cet excellent document : How to Maintain Happy SAS®9 Users http://support.sas.com/resources/pap...9/310-2009.pdf Géraldine Cade |
|
|
00
|
|
|
#3 |
|
Membre éclairé
![]() statisticien Inscription : mai 2011 Messages : 212 ![]() |
Les données sont des tables sas classiques, situées sur un même répertoire du disque dur, de toute façon dans les itérations successives pour calculer le temps moyen pour une méthode donnée ce sont exactement les mêmes fichiers qui sont rappelés plusieurs fois de suite à chaque itération de la boucle de la macro.
Alors la gestion mémoire des systèmes d'exploitations étant ce qu'elle est, et dans le cas où la première prend plus de temps que les autres, il est possible que ce soit ce premier temps qui soit le temps "normal" les autres temps étant sous-évalués du fait que des "choses" trainent encore en mémoire du fait des traitements de la première itération de la boucle et par conséquent qu'il y a donc moins de choses à aller chercher sur le disque ? C'est peut-être une explication naïve mais je cherche à comprendre. Peut être que je devrais utiliser des options pour "vider" la mémoire entre deux intérations ? Merci pour la référence cela va peut-être éclairer ma lanterne.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com