Reduce footprint by using string literals.
authorOssama Othman <ossama.othman@intel.com>
Tue, 13 Jan 2015 18:24:49 +0000 (10:24 -0800)
committerOssama Othman <ossama.othman@intel.com>
Tue, 13 Jan 2015 23:23:13 +0000 (23:23 +0000)
commita343c5c7096a99c192df71c006f185c5207a13b9
treec5a049b267865e2e1e86ee1da7eb9f8d41951fd9
parenta8c5c0c707b7d1fa297a66e27f645c7db54648b5
Reduce footprint by using string literals.

This change replaces the std::string based exception description
string constants in resource/include/StringConstants.h with
string literals instead.  Switching to string literals has a number of
advantages in this case:

- reduced start-up time for binaries that link against liboc
  since the static std::string constants no longer have to
  be initialized at run-time.
- the compiler is free to place the strings in read-only
  memory.
- reduced static and run-time footprint.

Footprint reductions in text, data and bss are as follows:

filename                        text
                        std::   const
                        string  char[]  Diff    Change
InProcClientWrapper.o   81458   77684   -3774   -4.63%
InProcServerWrapper.o   43292   40122   -3170   -7.32%
OCException.o           5399    1956    -3443   -63.77%
OCPlatform_impl.o       25054   21803   -3251   -12.98%
OCPlatform.o            9574    5535    -4039   -42.19%
OCRepresentation.o      97156   93782   -3374   -3.47%
OCResource.o            28565   25048   -3517   -12.31%
OCUtilities.o           19844   15805   -4039   -20.35%
liboc.so                453688  434400  -19288  -4.25%

filename                        data
                        std::   const
                        string  char[]  Diff    Change
InProcClientWrapper.o   1916    1916    0       0.00%
InProcServerWrapper.o   1368    1368    0       0.00%
OCException.o           4       4       0       0.00%
OCPlatform_impl.o       552     552     0       0.00%
OCPlatform.o            8       8       0       0.00%
OCRepresentation.o      388     388     0       0.00%
OCResource.o            100     100     0       0.00%
OCUtilities.o           344     344     0       0.00%
liboc.so                6636    6652    16      0.24%

filename                        bss
                        std::   const
                        string  char[]  Diff    Change
InProcClientWrapper.o   577     309     -268    -46.45%
InProcServerWrapper.o   657     389     -268    -40.79%
OCException.o           320     52      -268    -83.75%
OCPlatform_impl.o       420     152     -268    -63.81%
OCPlatform.o            340     72      -268    -78.82%
OCRepresentation.o      328     60      -268    -81.71%
OCResource.o            340     72      -268    -78.82%
OCUtilities.o           340     72      -268    -78.82%
liboc.so                3340    1192    -2148   -64.31%

filename                        dec
                        std::   const
                        string  char[]  Diff    Change
InProcClientWrapper.o   83951   79909   -4042   -4.81%
InProcServerWrapper.o   45317   41879   -3438   -7.59%
OCException.o           5723    2012    -3711   -64.84%
OCPlatform_impl.o       26026   22507   -3519   -13.52%
OCPlatform.o            9922    5615    -4307   -43.41%
OCRepresentation.o      97872   94230   -3642   -3.72%
OCResource.o            29005   25220   -3785   -13.05%
OCUtilities.o           20528   16221   -4307   -20.98%
liboc.so                463664  442244  -21420  -4.62%

Overall liboc.so drops in size by 20 kilobytes, a 4.62%
reduction in size with these changes in place.

Change-Id: I3e24f56bf702a0ea134b113d542f61e45f8af613
Signed-off-by: Ossama Othman <ossama.othman@intel.com>
resource/include/StringConstants.h