Alemort Posté(e) June 8, 2014 Signaler 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?
AlexMog Posté(e) June 8, 2014 Signaler 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 .
Azad Posté(e) June 8, 2014 Signaler 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.
davydavek Posté(e) June 8, 2014 Signaler 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
Alemort Posté(e) June 9, 2014 Auteur Signaler 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
Droby Posté(e) June 9, 2014 Signaler Posté(e) June 9, 2014 @Alex: J'attend ton tutoriel avec impatience De même héhé
davydavek Posté(e) June 9, 2014 Signaler 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.
AlexMog Posté(e) June 10, 2014 Signaler 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!
davydavek Posté(e) June 10, 2014 Signaler 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é.
AlexMog Posté(e) June 11, 2014 Signaler 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.
Recommended Posts
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant