Compiling the modified Tcl core for a number of different flags combinations yielded Table 2. It shows us how much of the object code in a static interpreter is used by the various features.
Flags | lib/libtcl8.3.a | ||
Size, absolute | Size, relative | Shrinkage, relative | |
490124 | 100.00 | 0.00 | |
TCL_NO_CHANNEL_EOF | 489964 | 99.97 | 0.03 |
TCL_NO_CHANNEL_BLOCKED | 489940 | 99.96 | 0.04 |
TCL_NO_PIDCMD | 489824 | 99.94 | 0.06 |
TCL_NO_CHANNEL_READ | 489420 | 99.86 | 0.14 |
TCL_NO_TTY | 488268 | 99.62 | 0.38 |
TCL_NO_CHANNELCOPY | 488032 | 99.57 | 0.43 |
TCL_NO_LOADCMD | 487264 | 99.42 | 0.58 |
TCL_NO_CMDALIASES | 486576 | 99.28 | 0.72 |
TCL_NO_SLAVEINTERP | 485080 | 98.97 | 1.03 |
TCL_NO_CHANNEL_CONFIG | 484932 | 98.94 | 1.06 |
TCL_NO_SOCKETS | 484428 | 98.84 | 1.16 |
TCL_NO_FILEEVENTS | 484376 | 98.83 | 1.17 |
TCL_NO_SLAVEINTERP | 480624 | 98.06 | 1.94 |
TCL_NO_CMDALIASES | |||
TCL_NO_PIPES | 480136 | 97.96 | 2.04 |
TCL_NO_NONSTDCHAN | 463544 | 94.58 | 5.42 |
TCL_NO_FILESYSTEM | 440940 | 89.96 | 10.04 |
MODULAR_TCL | 403228 | 82.27 | 17.73 |
It is obvious from looking at this table that most of the chosen features reduce the overall size of the static interpreter by only very small amounts of space. Only the file system code and the code dealing with the management of channels beyond the standard channels reduce the size by moderately significant amounts of space.
There is obviously room for improvement here. The question is, where are the features whose removal will reduce the library by significant amounts of space ? Our best answer so far is Table 7. This table lists the 36 largest object files and thus points us to the main areas we should look into.
Based on that data several possibilities for additional features to be removed are discussed in more detail later, in chapter 7, about our future work.