[Scummvm-devel] ScummVM binary size comparison

Neil Millstone neil at millstone.demon.co.uk
Wed Nov 12 13:48:46 CET 2008

Max Horn wrote:
> Hi everybody,
> Here are some mores idea how to save code size:
> == Trim base/commandline.cpp ==
> Virtuall all code in that file is not needed on the DS (or any other 
> port without a console). AFAICT, the DS only needs the "-c" command 
> line option, to choose different config files for the various builds 
> with different engines en-/disabled.
> Well, these days it shouldn't do that anyway -- just overload 
> OSystem::openConfigFileForReading() to return the config file the 
> specific build. According to Neil's figures, that could save about 24kb.
> Short term, we could add some #ifdef magic to conditionally remove all 
> that on those ports; on the long run, we could finally look into 
> implementing the idea of a "class Main" replacing much of the code in 
> base/main.cpp and base/commandline.cpp, see 
> <http://wiki.scummvm.org/index.php/User:Fingolfin#Misc>
#ifdef'ing that out sounds like a great idea.
> == Disable useless debug() and printf() calls ==
> On ports without a console, you usually just drop whatever output 
> debug() or printf() are meant to produce (except maybe in debug 
> builds, if you can transfer that data of a serial port.
> But if one does so by replacing the body of those functions by 
> nothing, the calls still remain in the code, and that costs a lot (as 
> the message string then is included, too). We could solve this by 
> introducing a new (set of) macro(s), like this:
> #define SVM_DEBUG(x)    do {} while(0)
> #else
> #define SVM_DEBUG(x)    debug x
> #endif
> Then instead of
>   debug(1, "foo");
> we would write
>   SVM_DEBUG((1, "foo"));
> (notice the extra set of parentheses) to completely remove any trace 
> of that call from the binary. I haven't measured how much this saves 
> in total, but for a sample file (common/advancedetector.cpp), it was 
> 1063 raw bytes of code. Not much. But if we also cover printf and 
> warning...
That sounds like quite a lot.  1063 bytes per file would make a whole 
lot of bytes over the whole binary.  Sounds like something worth trying.

Thanks for your help,

- Neil

More information about the Scummvm-devel mailing list