|
Auteur | Sujet : [Concours No 3] A vos cerveaux ! |
---|
Publicité | Posté le 24-06-2004 à 15:12:01 |
christophe_d13 L'efficacité à tout prix. | De mon côté, entre deux lignes de codes à mon boulot, j'ai encore cogité. Il existe un moyen de se passer de la division et du modulo sans pour autant manipuler autant de pointeur comme je l'avais fait...
|
Tentacle | Neko on peut encore fait ceci mais ça n'apporte pas grand chose :
Message édité par Tentacle le 24-06-2004 à 16:23:58 |
NeKoFuchikoma | ah oui bien vu tentacle ! Message édité par NeKoFuchikoma le 24-06-2004 à 16:40:38 |
antp Super AdministrateurChampion des excuses bidons |
--------------- mes programmes ·· les voitures dans les films ·· apprenez à écrire |
Tentacle | et puis de toute facon j'obtiens le même résultat sans cela ...
|
NeKoFuchikoma | allez moi je vais me cacher
|
Tentacle | Christophe a raison, on peut se séparer du modulo ... et d'ailleurs on est bête de pas y avoir pensé :
|
NeKoFuchikoma | Terrible, mais jusqu'ou ça va descendre |
Publicité | Posté le 24-06-2004 à 17:38:52 |
red faction | Vu les temps dexecutions qui deviennent de + en + cours, il ne vaudrait pas mieux utiliser qqch de plus precis comme QueryPerformanceCounter ??? |
NeKoFuchikoma | Bon demain on remplace quelques éléments dans le code asm, ce soir je deviens Message édité par NeKoFuchikoma le 24-06-2004 à 17:58:56 |
christophe_d13 L'efficacité à tout prix. | Si vous voulez, je vous donne un code d'une ligne pour faire une division, mais sans division... ça vous dit ?
|
Tentacle | Red Faction: soit, mais vu qu'on a tous des ordis différents on peut difficilement comparer. Sur 100 essais, j'obtiens 122.893169 ms.
|
Evadream -jbd- | christophe_d13 > attends un peu, ca m'excite les neurones |
Tentacle | c'est bon j'ai trouvé, j'avais déjà cherché sur cette voie hier soir mais je ne voyais pas comment en sortir le modulo, mais pour extraire le résultat de la division c'est impéccable !! J'essais de suite. |
christophe_d13 L'efficacité à tout prix. | Dans quelques jours, je prendrai chaque source et je ferai un test complet. Message édité par christophe_d13 le 24-06-2004 à 18:31:30 |
christophe_d13 L'efficacité à tout prix. | Je vois également des trucs rigolos dans les algos :
|
Tentacle | la valeur 0 doit-elle ajouter 1 point pour le nombre de 0 alors ?
Message édité par Tentacle le 24-06-2004 à 18:59:44 |
christophe_d13 L'efficacité à tout prix. | Et bien, c'est logique, puisque l'on ne compte que les zéros réellement présent. Et le zéro ne dispose que d'un seul chiffre.
|
christophe_d13 L'efficacité à tout prix. | Le seul hic du code c'est le fait que les stats se fassent dans des valeurs de 16 bits. Si la valeur aléatoire est toujours la même, il y a dépassement. ça marche pour la graine 0 et l'algo de Knutz, mais je ne l'ai posé que pour que chacun est la même suite aléatoire :
|
Tentacle | Bon déjà, j'ai pas du trouver la bonne méthode pour la division où je l'ai mal exploitée
|
NeKoFuchikoma |
|
Evadream -jbd- | J'ai rien trouvé qui me donne qqchose de mieux (en reprenant ton code Tentacle) en essayant de remplacer la division par multiplication + decalage, je dois mal m'y prendre Je ne suis pas contre une solution |
Tentacle | de mon côté je fais, par exemple pour une division par 10, (int)(n * 1.6) >> 4
|
Evadream -jbd- | Moi je multipliais par 104858 et divisait par 2^20 avec un décalage, mais comment dire, je sens que c'est pas çà. |
darkoli Le Petit Dinosaure Bleu |
Et il y a aussi la converion entier=>réel=>entier qui doit être longue. |
Joel F Real men use unique_ptr | pourquoi vous ne travaillais pas en entier tt du long ? |
red faction | ce serait bien qd on aura pratiquement fini loptimisation du prog de faire une compte rendu avec les diffrentes instruction et leur temps dexecution (ou du moins les classer suivant cette valeur) |
Ummon | Avouez que je vous aie tous bluffé avec mon temps d'exécution de 10min |
christophe_d13 L'efficacité à tout prix. | Je vous donne la solution pour une division par 100000.
Message édité par christophe_d13 le 24-06-2004 à 23:24:08 |
darkoli Le Petit Dinosaure Bleu | Tiens j'ai essayé de faire la même chose avec la division par 10 mais il y avait une perte trop importante, pour diviser N par 10 je faisais N = (N>>16)+(N>>32)+(N>>128) ce qui correspondait à N / ~9.84615384615. Mais je n'avais pas eu l'idée de le faire pour la découpe des nombres (/ et % 100000)!
|
darkoli Le Petit Dinosaure Bleu | Bon voilà j'ai viré la division et j'obtiens une durée d'envrion ~160ms (Algo de base ~1830ms).
Message édité par darkoli le 25-06-2004 à 09:54:07 |
NeKoFuchikoma | Pour infos :
Message édité par NeKoFuchikoma le 25-06-2004 à 10:01:29 |
Yttrium Furtif | Il faudrait encore jeter un oeil du côté des SSE. Je n'en suis pas sûr, mais il me semble qu'il y a quelques instructions qui permettent plusieurs opérations sur entiers par cycle.
|
Yttrium Furtif | Military technology.
|
christophe_d13 L'efficacité à tout prix. | Les if imbriqués peuvent laisser place à des cmp/setxx/add |
Yttrium Furtif | Y a-t-il une liste de nombre de cycle par opération pour les instruction asm (sur p4) ? |
christophe_d13 L'efficacité à tout prix. | Va voir les docs Intel ou AMD.
|
christophe_d13 L'efficacité à tout prix. | C'est une mauvaise idée de mettre le code en ASM directement.
|
Tentacle |
|
Publicité | Posté le |
Sujets relatifs | |
---|---|
Le concours de programmation ICFP 2004 a commencé | [Concours] Recherche de doublons dans une séquence |
[java/algo] Concours - implémenter une itf simple de gestion d'agenda. | [IA] petite idée de concours |
concours de code | [C++] Concours de code : new test en cours, proposez votre solution ! |
Concours programmation | [PHP] Comment organiser un concours |
organiser un concours . | [Concours] Votre Requête MySQL la plus complexe |
Plus de sujets relatifs à : [Concours No 3] A vos cerveaux ! |