Je cherche une/des option(s) ou même de conseils pour diminuer la place prise par un programme en mémoire
Exemple : si mon programme prends 6000ko en mémoire comment essayer de le réduire à 4000ko
Je connaîs déja l'option : -s qui diminue fortement la taille de l'executable, en connaissez vous d'autres dans le style ?
( ne me dites pas d'aller voir là : Manuel de GCC car c'est déja fait mais il y a tellement d'options que je ne m'en sort pas )
Le moyen le plus simple est la reutilisation de variable plus utiliser , ne pas oublier de liberer la memoire allouee dynamiquement.
Revoir son algorythme pour qu' il utilise moins de memoire
Le option de ton compilateur ne changerons pas trop la place pris en ram par ton programme , car c'est les variables declarer dans ton code qui prennent de la place en ram . Et gcc ne va pas modifier ton code !!
Mais ou niveau code tout va bien, enfait, je n'ai pas de problème spécifique avec un de mes programmes mais je voudrais savoir comment optimiser au maximum son programme
J'avais vu par exemple un spécialiste en programmation et en quelques ko de code, il faisait euh... je sais plus mais des trucs ou "nous"/moi aurions pris beaucoup plus de place en mêmoire
Justement , en quelleque ligne de code il fait un algorythme bien plus performant !! La vitesse de ton programme dependra avant tout de ca que des optimisations du compilateur ou autre!
Oui, ça me fait penser aux FPS .kkgrieger, dont l'exe ne prenait que 96 ko (et l'exe contenait les textures, models ect... )
L'exe ne contient pas de textures, il contient les fonctions permettant de créer des textures -> ce sont des textures procédurales. Avec un algorithme, ça dessine des textures.
Par exemple pour une texture qui fait un dégradé du rouge vers le noir, ça peut se créer à l'aide d'un tableau en mémoire affecté de valeurs bien choisies à l'aide d'un algorithme.
Plein de petites astuces comme ça, les sphères en 3D aussi ça peut se générer automatiquement de cette facçon, pas besoin d'un model.
Je cherche une/des option(s) ou même de conseils pour diminuer la place prise par un programme en mémoire
Il faut sortir le mapping (désolé, il faut lire la doc de gcc...) et regarder ce qui prend de la place. Le plus souvent, ce sont les chaines de caractères, et là, il n'y a pas grand chose à faire si la option -merge-strings a déjà été activée...
Autre zone souvent énorme : la zone d'initialisation des données. Eviter les données structurées (structures, tableaux) initialisées statiquement surtout si elles sont modifiables. Il faut mieux utiliser un memset() pour le plus gros et ajuster 'à la main' les valeurs de quelques variables.
Il peut y avoir des problèmes de portabilité avec memset().
C'est vraiment un problème la place ou c'est juste théorique ?
Il y a des options de compilation qui font gagner de la place, comme interdire l'inline ou le déroulage de boucles...
Il faut aussi factoriser son code au maximum (pas de répétition de code, mais une fonction, au besoin avec des paramètres si quelques éléments ou si le comportement diffèrent...
Oui, ça me fait penser aux FPS .kkgrieger, dont l'exe ne prenait que 96 ko (et l'exe contenait les textures, models ect... )
L'exe ne contient pas de textures, il contient les fonctions permettant de créer des textures -> ce sont des textures procédurales. Avec un algorithme, ça dessine des textures.
Par exemple pour une texture qui fait un dégradé du rouge vers le noir, ça peut se créer à l'aide d'un tableau en mémoire affecté de valeurs bien choisies à l'aide d'un algorithme.
Plein de petites astuces comme ça, les sphères en 3D aussi ça peut se générer automatiquement de cette facçon, pas besoin d'un model.
A ok, j'aurais pensé qu'ils avaient directement fait le GLuint dans l'exe, avec un tableau? Mais en fait non.
[C] Comment optimiser les performances d'un programme
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Google
Google