footprint

What is meaning of small footprint in terms of programming?


I heard many libraries such as JXTA and PjSIP have smaller footprints. Is this pointing to small resource consumption or something else?


Solution

  • Footprint designates the size occupied by your application in computer RAM memory.

    Footprint can have different meaning when speaking about memory consumption. In my experience, memory footprint often doesn't include memory allocated on the heap (dynamic memory), or resource loaded from disc etc. This is because dynamic allocations are non constant and may vary depending on how the application or module is used. When reporting "low footprint" or "high footprint", a constant or top measure of the required space is usually wanted.

    If for example including dynamic memory in the footprint report of an image editor, the footprint would entirely depend on the size of the image loaded into the application by the user.

    In the context of a third party library, the library author can optimize the static memory footprint of the library by assuring that you never link more code into your application binary than absolutely needed. A common method used for doing this in for instance C, is to distribute library functions to separate c-files. This is because most C linkers will link all code from a c-file into your application, not just the function you call. So if you put a single function in the c-file, that's all the linker will incoporate into your application when calling it. If you put five functions in the c-file the linker will probably link all of them into your app even if you only use one of them.

    All this being said, the general (academic) definition of footprint includes all kinds of memory/storage aspects.