Alemort Posté(e) June 8, 2014 Signaler Share Posté(e) June 8, 2014 Comme-vous le savez lorsque l'on fait de la programmation, un point important auquel n'ont accordé aucune attention lorsque l'on commence, c'est bien l'optimisation. Donc pour aller vers l'optimisation en language C, vers où se tourner? Pour améliorer ses algorithmes de calcul: -vers l'assembleur pour optimiser les différents calculs -Utiliser des types de variables moins gourmandes Optimisation générale: -éviter la copie de variable ou de tableaux dans des fonctions. -Recoder les fonctions que l'on utilise pour mieux les comprendre et en créer de moins gourmandes pour nôtres utilisations. Mais bon, les cours sur internet né détail pas trop ces points généralement. Quelques questions: Pour recoder une fonction par exemple prin, on se dirige vers quel type de fonction? Les fonctions que l'on utilisera il serait bien de les recoder mais il arrivera un point ou on pourra plus continuer, non? Y a-t-il de bons sites qui donnent des conseils sur ce genre de sujet? Y a-t-il d'autres voix pour optimiser son programme? Est-il préférable d'optimiser son programme en codant les fonctions, ou bien coder un programme qui marche et ensuite l'optimiser? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
AlexMog Posté(e) June 8, 2014 Signaler Share Posté(e) June 8, 2014 Je compte faire un tutoriel là dessus dès que j'aurai le temps (par exemple, savoir quand il faut passer une structure par copie, etc..), donc je te laisse attendre un peu, le temps que je monte le cours . Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Azad Posté(e) June 8, 2014 Signaler Share Posté(e) June 8, 2014 "-vers l'assembleur pour optimiser les différents calculs" : Tu peux expliquer ton idée ? Sinon, oui, bonne idée AlexMog aussi. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
davydavek Posté(e) June 8, 2014 Signaler Share Posté(e) June 8, 2014 "Utiliser des types de variables moins gourmandes" -A moins ce que tu travaille sur un système qui a une mémoire très limitée, c'est rarement utile.(je parle de trucs genre char a la place d'int) " Pour recoder une fonction par exemple printf, on se dirige vers quel type de fonction? Les fonctions que l'on utilisera il serait bien de les recoder mais il arrivera un point ou on pourra plus continuer, non?" -Les fonctions système, qui sont gérées par l'OS. Ceux qui ont creer l'OS ont bien coder ces fonctions, pourquoi pas toi ? "vers l'assembleur pour optimiser les différents calculs" -Ecrire de l'assembleur qui est plus rapide que du C requiert une excellente connaissance Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Alemort Posté(e) June 9, 2014 Auteur Signaler Share Posté(e) June 9, 2014 (modifié) @Azad: Lorsque je parle d'Assembleur, ce n'est pas pour remplacer le code en C par de l'asm mais pour comparer plusieurs calculs qui donnent le même résultat final pour repérer celui qui à besoin de moins de puissance/étapes. @Davydavek: Lorsque l'on utilise des tableaux de grande taille, c'est toujours intéressent, donc prenons un char qui vaut octet et un int qui en prend 4, et ce tableau avoisine les 12500 surface. Un tableau de int prendra: 50.000 octet et un char 12.500. Optimiser des petites choses sur un programme de plusieurs millier de ligne peut être bénéfique je trouve . Et sinon lorsque-tu parles de recoder les fonctions systèmes ou des fonction de son OS, il faut s'y prendre comment? oO @Alex: J'attend ton tutoriel avec impatience Modifié June 9, 2014 par Alemort 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Droby Posté(e) June 9, 2014 Signaler Share Posté(e) June 9, 2014 @Alex: J'attend ton tutoriel avec impatience De même héhé Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
davydavek Posté(e) June 9, 2014 Signaler Share Posté(e) June 9, 2014 Et sinon lorsque-tu parles de recoder les fonctions systèmes ou des fonction de son OS, il faut s'y prendre comment? oO Sous Windows tu peut recoder les fonctions en usermode, pour ça faudra analyser les DLLs du systeme avec un debugger, Apres pour les fonctions kernel (Nt/Zw), aucune idée, je ne suis jamais aller plus loin que le SYSENTER. Sous Linux, vu que le kernel est open-source, tu peut juste regarder la source puis essayer de faire ta propre version. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
AlexMog Posté(e) June 10, 2014 Signaler Share Posté(e) June 10, 2014 Sous Windows tu peut recoder les fonctions en usermode, pour ça faudra analyser les DLLs du systeme avec un debugger, Apres pour les fonctions kernel (Nt/Zw), aucune idée, je ne suis jamais aller plus loin que le SYSENTER. Sous Linux, vu que le kernel est open-source, tu peut juste regarder la source puis essayer de faire ta propre version. PAs besoin de se prendre la tête. Tu vas dans les headers (sous linux, c'est pour ça que linux est plus adapté) system, et tu regarde simplement la liste des fonctions system (les fonctions system sont déjà codées en ASM, tu ne peux pas aller plus bas niveau, c'est donc la "base" de la programmation en C, tu peux trouver une liste des fonctions system sur Google aussi!) Une fois que tu as les fonctions system, tout le reste c'est de la logique! Interdit toi les fonctions de la libC, et tu verra, tu codera un Printf rapidement, et tu comprendra comment il marche (ça marche avec absolument toutes les fonctions de la libC, je t'invites à lires mes cours, qui n'utilisent QUE des fonctions system.) Enjoy! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
davydavek Posté(e) June 10, 2014 Signaler Share Posté(e) June 10, 2014 PAs besoin de se prendre la tête. Tu vas dans les headers (sous linux, c'est pour ça que linux est plus adapté) system, et tu regarde simplement la liste des fonctions system (les fonctions system sont déjà codées en ASM, tu ne peux pas aller plus bas niveau, c'est donc la "base" de la programmation en C, tu peux trouver une liste des fonctions system sur Google aussi!) Une fois que tu as les fonctions system, tout le reste c'est de la logique! Interdit toi les fonctions de la libC, et tu verra, tu codera un Printf rapidement, et tu comprendra comment il marche (ça marche avec absolument toutes les fonctions de la libC, je t'invites à lires mes cours, qui n'utilisent QUE des fonctions system.) Enjoy! Il demandait comment réécrire les fonctions système, pas celles de la libc. Ça c'est aussi faisable sur Windows (windows.h), juste que c'est un peu moins bien documenté. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
AlexMog Posté(e) June 11, 2014 Signaler Share Posté(e) June 11, 2014 Il demandait comment réécrire les fonctions système, pas celles de la libc. Ça c'est aussi faisable sur Windows (windows.h), juste que c'est un peu moins bien documenté. Théoriquement, c'est possible de les recoder, mais en ASM uniquement. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.