Next: , Previous: Diagnostic messages, Up: Top


Appendix E Library performance

The following times were obtained on a Sun Ultra 5 with an UltraSPARC IIi processor running at 333MHz and running Solaris 7. The test performed was the one in tests/pass/test1.c and all tests were run on a lightly loaded system, but were run several times to obtain an average result. Obviously, these times can only be an approximation, but should serve to illustrate the effects on performance that each option can have. All times are given in seconds, and the second time on each line was obtained with the same options plus the NOPROTECT option. The tests were all run with the default CHECK=0 option, so running with the CHECK=- option would slow things down dramatically, albeit with more checking being performed to detect heap corruption.

Running with basic options:

no options 0.525 0.258
OFLOWSIZE=2 0.569 0.265
OFLOWSIZE=8 0.580 0.276
PAGEALLOC=LOWER 0.709 0.462
PAGEALLOC=UPPER 0.742 0.485

Running when all freed memory allocations are kept:

NOFREE=0xFFFF 0.711 0.338
NOFREE=0xFFFF OFLOWSIZE=2 0.725 0.350
NOFREE=0xFFFF OFLOWSIZE=8 0.739 0.358
NOFREE=0xFFFF PAGEALLOC=LOWER 1.048 0.710
NOFREE=0xFFFF PAGEALLOC=UPPER 1.079 0.722

Running when all freed memory allocations are kept and their contents are preserved:

NOFREE=0xFFFF PRESERVE 0.725 0.341
NOFREE=0xFFFF PRESERVE OFLOWSIZE=2 0.735 0.357
NOFREE=0xFFFF PRESERVE OFLOWSIZE=8 0.745 0.360
NOFREE=0xFFFF PRESERVE PAGEALLOC=LOWER 1.055 0.722
NOFREE=0xFFFF PRESERVE PAGEALLOC=UPPER 1.081 0.729

Running using watch points to check the overflow buffers:

OFLOWSIZE=2 OFLOWWATCH 28.758 28.372

Running using the Solaris malloc libraries:

Solaris malloc(3c) library 0.030
Solaris malloc(3x) library 0.033
Solaris bsdmalloc(3x) library 0.027
Solaris mapmalloc(3x) library 0.030
Solaris watchmalloc(3x) library 30.323