SIP and Media Footprint

High performance comes in small footprint



PJSIP and PJMEDIA was designed from day one to have very small footprint. It might not be the smallest SIP and media stack around, because the smallest stack would mean to have the stack designed specificly for the smallest device, thus probably have the least flexibility, performance, or even features.

PJSIP and PJMEDIA is a general purpose stack for all types of SIP applications, with all the features and high performance. But it was designed to have the very small footprint and to have the features arranged as such so that unneeded features will not get included in the link process.


How the Footprint Report is Generated

The report is generated by Python script from the pjsip-apps/build directory. The script controls various macros to be defined when building the footprint.c application, and after each build, it is stripped, and the application size is calculated with size tool. After completing each calculation, the script adds more macro to enable more feature, and re-build and re-calculate the size again. The footprint of a specific feature is calculated from the difference in application size from the previous build.

Because the footprint is calculated from total application size (not just sum of the .o file size), sometimes it happens that the .bss size of the new executable is actually smaller than previous built, resulting in negative value to be reported. But I think we can ignore this.


Footprint Reports

Please find below SIP and media footprint reports for various targets. The report shows the detailed footprint of each SIP and media feature, so that application designer can see beforehand what is the expected footprint of the application when certain features are included in the application.


- i386 Linux Application Footprint

Date: July, 13th, 2006

This is the SIP/media footprint for i386/Linux target, with settings configured to create minimum code size.

- ARM RTEMS Application Footprint

Date: July, 13th, 2006

This is the SIP/media footprint for ARM RTEMS target, compiled with the binary toolchain downloaded from RTEMS website (gcc-3.2.3) and RTEMS 4.6.6. As with all RTEMS applications, all operating system components and libraries (e.g. LIBC) are statically linked to the application, and this is included in the size calculation.