Aller au contenu

Messages recommandés

Posté(e)

Salut!

 

Le titre est un peu bizarre, car je suis tombé sur un super mystère.

J'ai une fonction qui s'appelle total, lorsque je la lance une première

fois sur mon dessin elle met environ 24s.

Si je la lance une deuxième fois elle met 25s,

une troisième fois elle passe à 26-27s.

une quatrième fois elle passe à 30s.

 

Je vois que tout de suite certains vont se dire, c'est normal, car le dessin change, et bien non,

ma fonction supprime des blocs sur mon dessin et ré-insère les blocs, c'est juste pour une mise

à jour. Et comme mes blocs ne changent pas le temps devrai être pratiquement le même.

 

J'ai fait un petit test en utilisant le lisp de benchmark (désolé, mais je ne connais plus lien)

et j'ai copier ma fonction pour avoir total1 total2 et total3

 

Premier test:

(benchmark '((total1)(total2)(total3)))

Elapsed milliseconds / relative speed for 1 iteration(s):rking ...

 

(TOTAL1).....23203 / 1.62

(TOTAL2).....30157 / 1.25

(TOTAL3).....37546 / 1.00

 

zoom sur le dessin, et je relance (benchmark '((total1)(total2)(total3)))

Elapsed milliseconds / relative speed for 1 iteration(s):

 

(TOTAL1).....24828 / 1.54

(TOTAL2).....31719 / 1.21

(TOTAL3).....38234 / 1.00

 

je relance simplement (benchmark '((total1)(total2)(total3)))

Elapsed milliseconds / relative speed for 1 iteration(s):

 

(TOTAL1).....28328 / 1.46

(TOTAL2).....35516 / 1.17

(TOTAL3).....41484 / 1.00

 

Dans les trois benchmark, total1 < total2 < total3, mais alors pourquoi le total1 du deuxième bench est-il plus rapide quand même que le total3 du premier bench?

 

 

Trouvant ca super bizarre, j'ai donc mis dans un lisp ceci:

(benchmark '((total1)(total2)(total3)))

(benchmark '((total1)(total2)(total3)))

(benchmark '((total1)(total2)(total3)))

 

Je charge le lisp qui lance donc les trois benchmark à la suite, et là surprise :o :

Elapsed milliseconds / relative speed for 1 iteration(s):

 

(TOTAL1).....35657 / 1.40

(TOTAL2).....41906 / 1.19

(TOTAL3).....49782 / 1.00

 

Elapsed milliseconds / relative speed for 1 iteration(s):

 

(TOTAL1).....56296 / 1.13

(TOTAL2).....61922 / 1.03

(TOTAL3).....63563 / 1.00

 

Elapsed milliseconds / relative speed for 1 iteration(s):

 

(TOTAL1).....65375 / 1.01

(TOTAL2).....65468 / 1.01

(TOTAL3).....66109 / 1.00

 

Dans tous les cas total1 < total2 < total3 mais total1 du 2ème> total3 du 1er bench.

 

 

Si quelqu'un sait pourquoi je suis preneur.

 

a+

 

[Edité le 25/6/2008 par bseb67]

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Salut,

par expérience, le temps de déroulement du programme, entre autre bien sûr du temps passé à l'exécuter, est susceptible de changer selon les process actif sur ton système, et selon les moments où des fonctions automatiques se mettent en marche (messagerie, anti-virus, Liv-update, etc...)

Mais c'est quand même difficile de te répondre sans avoir le prog sous les yeux....

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Salut bred,

 

Ces paramètres externes je sais qu'ils peuvent faire varier le temps,

mais j'ai fais les essais en coupant le maximum de processus et en déconnectant mon pc

du réseau, donc rien que du local, et bien sur je ne touche pas à la souris ni au clavier.

 

Je n'ai pas gardé les valeurs, mais j'ai même testé sur des répétitions de 10 à 15 au lieu

de 3 comme je le décri avant, et c'est toujours les mêmes conclusions.

 

Donc, on clair, + tu lisp, - ca lisp ;) haha!

 

Bon, disons que normalement, en utilisation classique, le dessinateur ne fera pas des lancements

successifs, mais comme mon rôle est d'automatiser des manipulations, mes patrons souhaitent

que se soit rapide. C'est pour cela que je fais toujours des mesures de temps, afin de voir si c'est

utile ou non et je mesure souvent les sous-fonctions pour trouver laquelle me fait perdre le plus de

temps et donc chercher à l'améliorer.

 

Normalement "je ne devrai pas donner ca", mais voici le code (bien-sur ce n'est que quelques lignes

sur les 15.000 que font tous les lisp réunis)

 

(defun total1()
 	(setq fonc_name "total1: ")
 	(cond
	; on lance la suppression des Tés sur le groupe
	((= (delete_tes_sur_reseau VAR_AT_GROUPE_ENCOURS) nil)
	 	(write_error_log (strcat fonc_name "ERREUR d'effacement des Tés sur le réseau") -1)
	)
	; on lance la suppression des réductions sur le groupe
	((= (delete_rcc_sur_reseau VAR_AT_GROUPE_ENCOURS) nil)
	 	(write_error_log (strcat fonc_name "ERREUR d'effacement des Tés sur le réseau") -1)
	)
	; on lance la suppression des coudes sur le groupe
	((= (delete_coudes_sur_reseau VAR_AT_GROUPE_ENCOURS) nil)
	 	(write_error_log (strcat fonc_name "ERREUR d'effacement des coudes sur le réseau") -1)
	)
	; on lance la suppression des tuyaux sur le groupe
	((= (delete_tuyaux_sur_reseau VAR_AT_GROUPE_ENCOURS) nil)
	 	(write_error_log (strcat fonc_name "ERREUR d'effacement des tuyaux sur le réseau") -1)
	)
	((= (setq VAR_AT_LISTE_POINTS_RESEAU (get_pointsCAD_du_groupe VAR_AT_GROUPE_ENCOURS)) nil)
	)
	((= (place_tes_sur_reseau VAR_AT_GROUPE_ENCOURS) nil)
	 	(write_error_log (strcat fonc_name "ERREUR de placement des Tés") nil)
	)
	((= (place_rcc_sur_reseau VAR_AT_GROUPE_ENCOURS) nil)
	 	(write_error_log (strcat fonc_name "ERREUR de placement des rcc") nil)
	)
	((= (place_coudes_sur_reseau VAR_AT_GROUPE_ENCOURS) nil)
	 	(write_error_log (strcat fonc_name "ERREUR de placement des coudes") nil)
	)
	((= (ramene_reduction_du_reseau) nil)
	)
	((= (place_tuyaux_sur_reseau VAR_AT_GROUPE_ENCOURS) nil)
	 	(write_error_log (strcat fonc_name "ERREUR de placement des tuyaux") nil)
	)
	(t
	 	(zoom_groupe VAR_AT_GROUPE_ENCOURS)
	 	(setq res t)
	)
)
)

 

voila.

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité