29.7.1 Performance considerations for data types

Avoid declaration and initialization of variables or structures that contain native length data types such as INTN, UINTN, and pointers. One of the issues with initializing variables occurs during optimization. If variables are initialized statically, the compiler optimizes them for size and, for example, gives the variable a 32-bit placement or a 16-bit placement. This can create problems if the variables are a size that is different on different CPU architectures.


TIP: Initialize variables separately from declaring them.


The amount of variable initialization that is performed during EBC runtime initialization can be determined by viewing the PE/COFF sections of a UEFI Driver compiled for EBC. The linker provided with Microsoft* tools provides a method to perform this operation.

The command is: link -dump -headers <filename>. This command dumps the different parts of an .EFI file. The goal is to minimize the VARBSS section while maximizing the .data and .rdata sections of the PE/COFF image.