CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Optimisez vos boucles !

lag-it
lag-it
Niveau 10
19 avril 2004 à 00:51:03

Après quelques tests rudimentaires à l´aide de " time.h", il semblerait que ma fonction génère environs 2000 appels de plus que la leur, sur une durée de 60 secondes, a raison de 10 tests effectués. Compilé sous gcc de Devcpp 5.

Altonfrere
Altonfrere
Niveau 10
19 avril 2004 à 00:51:11

test effectué sur un buffer de 79 000 000 caractères ( comme dans l´exemple de l´article) avec 312350 occurrences trouvées pour un caractère donné

lag-it
lag-it
Niveau 10
19 avril 2004 à 00:52:18

Donc compte est plus rapide ?

Altonfrere
Altonfrere
Niveau 10
19 avril 2004 à 00:52:54

nan c´est l´inverse

lag-it
lag-it
Niveau 10
19 avril 2004 à 00:54:03

Dommage, j´aurais essayé :)
Pourtant avec Devcpp :-d

Altonfrere
Altonfrere
Niveau 10
19 avril 2004 à 00:55:40

bah c´était bien tenté :)

en tout cas ca m´aura permis de me remettre un peu à VTune ( la version 7 est vraiment excellente avec intégration dans Visual . NET etc...!)

lag-it
lag-it
Niveau 10
19 avril 2004 à 00:56:17

Bon et bien bonne nuit :)

lag-it
lag-it
Niveau 10
19 avril 2004 à 13:18:15

Y a peut être un moyen de l´optimiser un peu en supprimant la variable var, pour ne garder qu´un " char *val" et non un " const char *val", dont on incrémentera l´addresse, comme :

int compte( char* val, char ch )
{
char table[256];
int nb = 0;

memset(table,0,sizeof(char)*256);
table[ch]= 1;

while( *val!=´\0´)
{
nb+=*(table+*val);
val++;
}

return nb;
}

Les statiques avaient l´avantage d´être plus rapides en outre...

Altonfrere
Altonfrere
Niveau 10
19 avril 2004 à 13:47:50

vi mais ca change rien au classement :)

si tu compares les routines tu verras que tu fais nb+= TOUT le temps ( même avec des 0) or la fonction optimisée par D-Loop ne fait qu´avancer le pointeur et incrémenter lorsqu´il trouve le caractère dans le masque...

lag-it
lag-it
Niveau 10
19 avril 2004 à 13:58:20

Moui :)
Et c´est vrai qu´en cherchant à optimiser encore un peu, on tombe sur le D-loop pattern.
C´est vraiment pas mal comme algorithme...

lag-it
lag-it
Niveau 10
19 avril 2004 à 14:19:55

Et en remplacant le corps de leur while principale par :

while(char_mask[(unsigned char)*val]==0)
{
++val;
}
++val;
++i;

Et en faisant un :

return --i;

c64
c64
Niveau 10
19 avril 2004 à 15:42:31

Ce qui m´intéresse surtout c´est de voir le code machine qui résulte de l´utilisation de cette méthode :)

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment