Très probablement, vous aurez besoin de choisir des algorithmes soigneusement. Objectif pour les algorithmes qui ont O(1) O(log n) l'utilisation de la mémoire (c'est à dire faible). Par exemple, continue de redimensionner les tableaux (par exemple, std::vector
) dans la plupart des cas nécessitent moins de mémoire que les listes chaînées.
Parfois, en utilisant les tables de recherche peut être plus benefitial à la fois de la taille du code et de la vitesse. Si vous avez seulement besoin de 64 entrées dans un IUT, c'est 16*4 octets pour sin/cos/tan (utiliser la symétrie!) par rapport à un grand sin/cos/tan, fonction.
La Compression est parfois utile. Des algorithmes simples comme RLE sont faciles à compresser/décompresser quand ils sont lus de manière séquentielle.
Si vous faites affaire avec des graphiques ou audio, tenez compte des différents formats. Palettisées ou bitpacked* des graphiques peut être un bon compromis pour la qualité, et les palettes peuvent être partagées à travers de nombreuses images, outre la réduction de la taille des données. L'Audio peut être réduite de 16 bits à 8 bits ou même de 4 bits, stéréo et peut être converti en mono. Taux d'échantillonnage peut être réduite de 44,1 KHz à 22 khz ou 11kHz. Ces transformations audio de réduire considérablement leur taille des données (et, malheureusement, la qualité) et sont triviales (à l'exception de ré-échantillonnage, mais c'est ce que l'audio logiciel est pour =]).
* Je suppose que vous pourriez mettre cette sous compression. Bitpacking pour les graphiques se réfère généralement à réduire le nombre de bits par canal de sorte que chaque pixel peut correspondre aux deux octets (RGB565 ou ARGB155 par exemple) ou un (ARGB232 ou RGB332) à partir de l'original en trois ou quatre (RGB888 ou ARGB8888, respectivement).