|
Page : 1 2 Page Précédente | |
Auteur | Sujet : Défi: optimisation d'une fonction de convertion (Bin => Dec) |
Publicité | Posté le 04-01-2005 à 14:38:09 |
FlorentG | Déjà remplace Mid par Mid$ |
LCPROG Bande d'Ours | effectivement! je gagne déjà 15% de temps
|
LCPROG Bande d'Ours | Ok! J'ai étudié ça. Voici ma nouvelle fonction. je n'utilise plus du tout de len() car ma chaine d'entrée est toujours sur 9 caractères.
Message édité par LCPROG le 04-01-2005 à 15:40:43 |
FlorentG | Tiens pour la comparaison avec "1" :
|
FlorentG | Aussi, tu pourrais précalculer les puissances, vu qu'elles sont connues et limitées. Met un tableau constant dans ton programme qui contient les puissances déjà calculées, afin que tu n'ai que ça à faire :
|
LCPROG Bande d'Ours | J'ai encore gagné 5 secondes! (on "bench" en était à 50 sec, j'en suis à 45 juste avec cette modif.
|
FlorentG | Essaye avec le tableau de puissances. Met une variable globale genre PowerArray = Array(1, 2, 4, 8, 16, 32, 64, 128, 256, 512). Comme ça suffit de faire un PowerArray(nCpt), et hop t'as la puissance cash, pas besoin de la recalculer à chaque fois que tu lances la fonction |
LCPROG Bande d'Ours | Vraiment pas bête!! Ca m'avait même pas effleuré l'esprit les constantes... J'ai encore gagné 4 secondes, j'en suis à 41 secondes pour le bench. Je ne sais pas si on peut faire plus rapide maintenant.
|
Publicité | Posté le 04-01-2005 à 16:12:48 |
FlorentG | Ce qu'il faudrait essayer, c'est de profiler la fonction pour voir quelle est la ligne qui prend le plus de temps |
FlorentG | C'est cette ligne qui bouffe le plus :
|
LCPROG Bande d'Ours | Pour cette fonction ça va aller je pense
|
LCPROG Bande d'Ours | Oui c'est ce que je me disais Peut être qu'en la décomposant en :
|
dreameddeath | Et avec ça
|
FlorentG | Ouais, t'as déplié la boucle while C'est sûr plus de décrémentation, ni de condition pour le while, mais après bonjour la syntaxe D'ailleurs ce genre d'optimisation est parfois réalisée par le compilateur... Message édité par FlorentG le 04-01-2005 à 16:32:23 |
LCPROG Bande d'Ours | j'essaie de suite... c vrai que c'est pas beau mais je m'en tape pour cette fonction... |
dreameddeath | oui mais bon comme on ne sait pas trop comment fonctionne le compilo (ou plutot le pre-compilo) faut tout lui dire... |
FlorentG | Mais faudrait remplacer genre
|
LCPROG Bande d'Ours | ça passe à 48 secondes avec ça, c'est pas plus rapide |
LCPROG Bande d'Ours | J'essaie avec le second code... |
LCPROG Bande d'Ours | j'ai des perfs identiques avec
|
dreameddeath | une petite question c'est sous quoi (vba , vb.net??) et quelle version du language (ou d'office) |
FlorentG | Oui aussi, là j'ai tout fait dans le cas de VB normal, pas VB.NET |
LCPROG Bande d'Ours | c'est sous vb sp6 |
dreameddeath | par contre en essayant sous excel 2000 (vba), avec la boucle dépliée, ça divise le temps d'execution par 2... |
FlorentG | Oui en VBA c'est directement interpreté, en VB normal y'a quand-même une compilation, donc ça doit jouer... |
charly007 | Au lieu de travailler sur une chaîne, il serait peut-être plus judicieux de travailler sur un nombre, en la convertissant (CInt()).
Message édité par charly007 le 04-01-2005 à 17:32:13 |
dsls | Et un petit :
|
dreameddeath | Bah je ne suis pas sur qu'en rajoutant une conversion en entier on y gagne car finalement on va faire string vers int(binaire) vers int au lieu de faire directement string vers int |
charly007 |
Message édité par charly007 le 04-01-2005 à 17:48:40 |
FlorentG | Est-ce que le Cint va fonctionner ? J'me demande s'il va pas faire un erreur... |
charly007 |
|
mareek Et de 3 \o/ |
--------------- "I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack |
FlorentG |
|
charly007 |
Message édité par charly007 le 04-01-2005 à 18:27:54 |
mareek Et de 3 \o/ |
--------------- "I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack |
charly007 |
Message édité par charly007 le 04-01-2005 à 18:52:03 |
mareek Et de 3 \o/ | il a dit que c'était du VB6 --------------- "I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack |
dreameddeath | donc c'est pas du VBA comme le liens que tu donnes dans VB l'integer c'est du 32 bits (soit environ 4 milliard de valeurs possibles) |
Publicité | Posté le |
Page : 1 2 Page Précédente |
Sujets relatifs | |
---|---|
[C] Convertion double -> dec -> hex | Comment faire pour qu'une fonction renvoie un tableau? |
executer un scrpt en fonction de l'ip de l'user | Fonction asm utilisable en C++, linker error... |
[Maple] cherche une fonction qui retourne la taille d'une table | Socket : la fonction connect. |
help: probleme de fonction .h en C | besoin d'aide pour convertion html-->css |
Question à propos d'une fonction du htacces de PHPNuke | |
Plus de sujets relatifs à : Défi: optimisation d'une fonction de convertion (Bin => Dec) |