138Fermer140
GoldenCrystalLe 20/05/2010 à 22:42
Je précise un truc quand même: Si tes images sont placée dans le binaire, il vaut mieux qu'elles ne soient pas compressées, et plus exactement, qu'elles soient directement utilisables sans traitement.
Déjà, ça va augmenter la taille de ton éxécutable. Le système d'exploitation étant, on l'espère, pas trop mal foutu, il ne chargera pas directement toutes les données en mémoire, mais la mémoire virtuelle sera déjà prête malgré tout. (En fait, il va faire un mmap de l'éxécutable, mais bref).
Quand tu vas lire ton image en mémoire, le système va charger en RAM ce qui était resté sur le disque si besoin. À partir de là, tes données occuperont une place constante dans la mémoire. Dans le « meilleur des cas », elles finiront par se retrouver en swap, mais ça occupera quand même des ressources.
Donc si tu fais un traitement derrière (typiquement: décompression/placement en mémoire de texture), tu vas monopoliser deux fois plus de ressources que nécéssaire. Une fois pour l'image de l'exécutable chargée en mémoire, et une fois pour la ressource « traitée »… Méchant ! sad
Il va de soi que cette technique est très intéressante si tu t'intéresses aux concours de « démo en 64k », mais si tes ressources sont de l'ordre du Mo, c'est à proscrire ^^

Sinon, il me semble (mais ça remonte à des années donc je peux pas garantir l'exactitude) que les ressources Windows prennent deux fois plus de mémoire que nécéssaire. (À vérifier hein, ma mémoire me dit que c'était pas juste pour le texte encodé en UTF-16 vs ANSI, mais également pour le binaire avec un truc genre <octet utile> 0 <octet utile> 0 …)