|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() statisticien Inscription : mai 2011 Messages : 213 ![]() |
Bonjour,
J'ai créé un certain nombre de fonctions via fcmp, qui auraient également pu être remplacées par des bouts de code sas Macro, et donc je me pose la question des temps de calcul. Selon votre expérience, est-il avantageux en terme de temps de calcul de mettre ses parties de code complexe lorsqu'elles s'y prêtent sous forme de fonction plutôt que sous forme de code macro ? |
|
|
00
|
|
|
#2 |
![]() ![]() Stéphane Consultant et formateur SAS et Cognos Inscription : avril 2009 Messages : 1 791 ![]() |
Est-il possible de te retourner la question ?
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !Moteur de recherche dans les papiers SAS |
|
00
|
|
|
#3 |
|
Membre éclairé
![]() statisticien Inscription : mai 2011 Messages : 213 ![]() |
Bah j'en sais rien, il faudrait que je fasse des comparaisons de mes fonctions avec du code (sas macro ou pas) inclus directement dans une étape data.
Mes premières impressions c'est que les fonctions programmées via fcmp (pour peu qu'on les optimise...mais c'est la même chose pour tout) semblent "rapides". Pour autant des papiers à droite et à gauche semblent invoquer un surplus de 50 à 300/400% pour une programmation via "fcmp" vs "sas macro/code normal" J'essayerais de faire quelques mesures aujourd'hui. C'est pour ça que je souhaitais avoir un retour d'expérience avec d'autres utilisateurs qui auraient plus ou moins testé , si des préconisations de "bon usage" de la fcmp via macro sas se dégageaient... ? |
|
|
10
|
|
|
#4 | ||||||||
|
Membre éclairé
![]() statisticien Inscription : mai 2011 Messages : 213 ![]() |
voici un premier test, il s'agit d'une fonction pour pallier aux erreurs produites par l'appel de
sur des variables codées en UTF8 lorsque la chaine a été altérée (coupure en plein milieu d'un caractère codé en UTF8 et se soldant donc à l'éxecution par une erreur) histoire de récupérer quand même ce qui est récupérable. J'ai utilisé une table de 5 000 000 de lignes contenant un texte caractère avec des accents Je soumet les deux codes concurrents , celui avec la proc fcmp Code :
Code :
la log via la fonction Code :
Code :
La version macro est la plus rapide (84 secondes) et la version avec la fonction la plus lente avec un temps supplémentaire d'environ +60% (136 secondes). L'intérêt au niveau de la programmation de la fonction via proc fcmp, c'est qu'on a pas du tout à gérer dans le programme les dimensionnement des intermédiaires de calcul et la séparation des variables intermédiaires via un drop + les interactions des variables de la macro avec les éventuelles variables de même nom correspondant à celles des données car tout le code est "isolé" dans la fonction. Une facilité de programmation en plus en plus, mais avec une perte de temps cpu... C'est un plus lors de la mise au point, mais en cas de traitement lourds et répétés une conversion en macro code de la fonction lorsqu'elle est possible doit donc permettre un gain de temps. Tout dépend en fait, selon les opérations par rapport au temps total d'execution du programme +60% ou +200% sur une petite étape ce n'est pas forcément la mer à boire... |
||||||||
|
|
20
|
|
|
#5 |
|
Membre éclairé
![]() statisticien Inscription : mai 2011 Messages : 213 ![]() |
Question naïve...
La proc proto donne accès à la proc fcmp à des bibliothèques de fonctions C à ce que j'ai compris... Programmer directement ses fonctions en C puis les appeler via une fonction défini par proc fcmp est-ce plus performant que de "coder" directement la fonction dans une proc fcmp (pour du code plus ou moins complexe, je ne parle pas de faire qu'une addition...) ? Quelqu'un a t il testé ? Pour les fonctions C il y a aussi "CALL MODULE" Idem, quelqu'un a t il testé ? |
|
|
00
|
|
|
#6 |
![]() ![]() Stéphane Consultant et formateur SAS et Cognos Inscription : avril 2009 Messages : 1 791 ![]() |
via la proc PROTO non je n'ai pas testé.
le CALL MODULE oui, c'est un peu instable mais je n'ai jamais fait de test de perf.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !Moteur de recherche dans les papiers SAS |
|
00
|
|
|
#7 |
|
Membre éclairé
![]() statisticien Inscription : mai 2011 Messages : 213 ![]() |
Petit retour avec mon expérience sur une fonction de similarité.
http://www.developpez.net/forums/d11...imisation-sql/ Le code avec la fonction de similarité programmée via proc fcmp tournait en 15h, après optimisation du programme et ré-intégration du code de la fonction dans le corps même de l'étape DATA le temps n'était plus que d'1h30 (un gain de 10 donc...). Toujours y regarder à deux fois donc...
|
|
|
10
|
Copyright © 2000-2012 - www.developpez.com