Bonjour,
Je suis en train de découvrir l'applescript, et j'ai un problème que je ne parviens pas à résoudre... Je sollicite donc vos lumières !
Le script : mon script est en deux parties,
- une sorte de librairie avec des fonctions de base (genre affichage dans un terminal, calcul du temps d'exécution, etc.)
- le script à proprement parler, qui modifie un fichier Excel 2011 (pas de commentaire là-dessus) et fait appel aux fonctions de base du premier script.
- je souhaiterais pouvoir lancer mon second script via le parchemin dans la barre de menu sur la machine cible, un iMac sous Snow Leopard.
Les acteurs :
- MacBook Pro (OS X 10.7.4)
- iMac 9,1 (OS X 10.6.8)
Le pitch :
- sur mon McBook Pro, en mode admin comme en mode utilisateur, sous Smile ou sous l'éditeur natif, j'obtiens un temps d'exécution de l'ordre de 1min40s avec les .scpt
- sur mon McBook Pro toujours, en mode admin comme en mode utilisateur, j'ai le même temps d'exécution si je lance le script à partir du parchemin (en .app)
- sur l'iMac, en mode utilisateur, sous l'éditeur natif j'ai un temps de réponse de 2min47s avec les scpt
- en revanche, et c'est là l'objet de ma question, si j'exécute le même script en .app sur le même fichier Excel via le parchemin, mon temps d'exécution s'effondre, je dépasse la demi-heure !
Mes investigations :
1. Le % d'utilisation processeur:
- avec l'iMac+éditeur (.scpt), l'occupation processeur du thread Excel est de 80% environ
- avec iMac+parchemin (.app), on passe à moins de 1%
- j'ai utilisé renice en su pour changer la priorité du thread Excel, mais cela n'a rien changé.
2. J'ai sauvé les .scpt sur l'iMac en .app, au cas où il y ait des différences de traitement des .app entre Lion et Snow Leopard. Pas de changement.
3. J'ai exécuté dans l'éditeur le script principal en .scpt faisant appel au script librairie compilé (.app) : même temps de réponse désastreux.
4. Réduisons le champ d'investigation : j'ai reformaté mon script principal pour inclure directement les fonctions décrite dans la librairie attachée.
Toujours 30min d'exécution pour le .app vs 2min pour le .scpt
Ma question :
Pourquoi ces différence énorme de temps d'exécution ?
Auriez-vous des pistes à me proposer ? Je suis un peu à court d'idées...
De la doc ? Des outils d'investigation ? Je suis preneur !!
Question annexe : à la base, je suis intervenu sur ce script car il y avait un problème un peu curieux : le script se relançait tout seul. J'ai découvert que la cause de cette boucle inopinée était un bug dans le script, et j'ai même réussi à reproduire ce comportement avec un autre bug (genre j'oublie de préciser qu'une fonction que j'utilise se trouve dans la librairie jointe).
Avez-vous déjà vu ce comportement ?
Du coup, je mets systématiquement une assertion en début de script pour vérifier qu'il n'a pas déjà tourné, mais je trouve cela curieux...
Partager