[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:
> #ifdef DISABLE_DEBUG_OUTPUT
> #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