Aussie AI
Reducing Static Storage
-
Book Excerpt from "Generative AI in C++"
-
by David Spuler, Ph.D.
Reducing Static Storage
Static storage refers to the memory for global and localstatic
variables, string
constants and floating-point constants. All of the general size-reduction
above can reduce the size of the global and static
variables.
String literal static memory. The space requirements for string constants can be reduced if the compiler has an option to merge identical string constants (which arise quite frequently). If there is no such option, or the option does not merge string constants across object files (which is quite likely), merging string constants can be achieved by the programmer, although the method is far from elegant. For example, including this variable in a header file and using it in multiple files may create multiple copies of the string literal:
#define TITLE "A very long string ... "
Instead, a global variable can be declared to hold the
string constant and the name of this char array is used instead of the string constant.
In modern C++ you can use “inline
variables” to avoid linker problems with multiple definitions.
inline const char TITLE[] = "A very long string ... ";
This change is unlikely to reduce the speed of the program, nor does it increase memory
requirements even if TITLE
is used only once (there may seem to be an extra 4 bytes to
hold a pointer value pointing at where the string of characters is stored, but this is not so).
Large global variables.
If there is a large global or static
variable or array, the amount of static storage can be
reduced by allocating it on the heap using malloc
or the new
operator, or by making it
an automatic variable. This is particularly useful if the object has a short “lifetime”, in
the sense that it is used only briefly (e.g. the array is used as temporary storage inside a
function). If the variable is used all the time, this change doesn’t reduce the overall space
problem, but simply moves the problem to another area.
• Next: • Up: Table of Contents |
The new AI programming book by Aussie AI co-founders:
Get your copy from Amazon: Generative AI in C++ |