Bonjour
J'aurais voulu savoir s'il était possible d'accélérer l’exécution des scripts.
Par exemple en allouant tant de % de la ram de l'ordinateur ?
Version imprimable
Bonjour
J'aurais voulu savoir s'il était possible d'accélérer l’exécution des scripts.
Par exemple en allouant tant de % de la ram de l'ordinateur ?
Bonsoir,
Pas à ma connaissance, mais quelques règles restent valables :
- la déclaration de variable (property) reste de mise car elle contribue à un meilleur adressage interne
- certaines instructions AS sont très puissantes correctement utilisées et permettent d'économiser de nombreuses instructions
- à l'inverse certaines sont gourmandes en mémoire et cpu dans certains cas
- il reste toujours vrai qu'avant de ce lancer dans un code, il faut le penser en fonction du langage
Enfin, j'ajoute qu'il est parfois utile d'interconnecter des langages, comme AS et shell, voir Python ou PERL
A titre d'exemple, sur un dossier de quelques milliers de fichiers, je souhaite la liste des noms de fichier. Avec AS, cela peut prendre quelques minutes pour un "get items" alors qu'un "do shell script" avec la commande shell "ls" le fait en une fraction de seconde en récupérant la liste dans un texte (chaque Applescript paragraph te donnera le nom d'un fichier)...
Donc oui, on peut optimiser,..mais chaque cas est particulier.
Bon courage !
Merci beaucoup pour ces infos, en effet mon premier ressentie sur la fonction de listage de fichier en applescript via le finder est bien le même comparer à un ls en shell.
Bref je pense que c'est comme tout langage de programmation tout réside dans optimisation et la propreté du code.
Bonjour,
Je rebondie sur ce post.
Dans cet objectif, est il possible de mettre des "points de log" dans le code pour voir le temps de traitement des différents morceaux de codes ?
Thais
Bonjour Thais,
Bien sûr, il est possible de faire des logs !
Ceux-ci peuvent contenir n'importe quel texte, y compris, bien sûr le temps (instruction current date).
Voici un exemple avec 2 routines possibles, l'une utilisant du shellscript Slog, l'autre en Applescript pur (ASLog)...
Je crois même me souvenir que nous avions optimisé la seconde avec l'ami FredoMkb !
Comme la première est en shell, ...elle est plus rapide, mais attention au accents et caractères spéciaux !
Je précise que la fonction Coup d'Oeil du Finder, appliquée sur le fichier de log, est mise à jour pendant l'exécution du script ! Donc en direct.
CordialementCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 on run ASlog("Hello voici une trace à " & (current date)) SLog("Hello voici une trace à " & (current date)) end run -- en utilisant le shell on SLog(msg) set the my_log to ¬ (POSIX path of ((path to desktop) as text) & "mon_journal.txt") try -- Créer si besoin tell me to do shell script "touch " & (quoted form of my_log) -- Ajouter le message en fin de fichier tell me to do shell script "echo " & ¬ (quoted form of msg) & ¬ " >> " & (quoted form of my_log) end try end SLog -- sans utiliser le shell on ASlog(msg) set the my_log to ¬ ((path to desktop) as text) & "mon_journal.txt" try -- ouvrir le fichier. Finder le crée si besoin open for access file the my_log with write permission -- écrire le message en fin de fichier write (msg & return) to file the my_log starting at eof -- fermer le fichier close access file the my_log on error try close access file the my_log end try end try end ASlog
Bonjour Philippe,
Merci pour l'info, c'est nickel.
Tu sais comment préciser le truc et avoir une précison au niveau milliseconde et pas seulement seconde ?
Thais
Une petite piste :
Donc avec le mode AS, un peu moins rapide que le shell ....:cry:Code:
1
2
3
4
5
6
7
8 set msg to "Hello voici une trace à " try do shell script "defaults read b" on error errorText set msg to msg & (text 12 thru 23 of errorText) end try ASlog(msg)
A+
Thais
Bonsoir Thais,
Super. Je n'avais pas pensé à utiliser les erreurs !!
Juste pour s'amuser voici celui que j'utilisais avant :
CordialementCode:
1
2
3
4
5
6
7
8
9 set A to getTicks() delay 0.5 set B to getTicks() display dialog (A as string) & return & (B as string) & return & (B - A) as string on getTicks() set ticks to (do shell script "ruby -e 'puts Time.now.to_f'") return (text 8 thru -1 of ticks) as real end getTicks
Bonjour à tous :)
Jeu peux jouer aussi ;)
Voici les routines que j'utilise :
Sinon, bravo Thaïs pour le coup du "try error", bien vu :ccool:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 set nDbt to my f_getMicro_s() repeat 1000 times get current date end repeat set nFin to my f_getMicro_s() display dialog ("Durée totale : " & return & (my f_getChrono_n(nDbt, nFin)) & " secondes") with icon 1 on f_getMicro_s() return do shell script "php -r 'echo microtime(true);'" end f_getMicro_s on f_getChrono_n(n1, n2) return (run script (n2 & " - " & n1)) as number end f_getChrono_n
:)
Bonjour,
Grâce à votre contact messieurs, je progresse chaque jour et je peux commencer a redonner "un peu - je suis encore une junior" de ce que j’apprends à la communauté ....
A+
Thais