Optimizing DLLs

From Valve Developer Community
Jump to navigation Jump to search

The Source SDK Visual Studios Projects properties and options are acceptable for many mods, but it can be made better and faster with some small changes to utilise Microsoft's optimising C++ compiler. These changes produce code better tuned for newer processors without the need to re-write anything.

These changes are implemented by added extra switches and options to the property pages of your client and server projects. You can find this by selecting Project then Properties from the menu in the Visual C++ 2003 IDE.

Note.pngNote:Don't forget to add these options in both the client and hl properties

Options

In the project properties page of your client and server, change these settings to optimise your DLL files.

General

  • Whole Program Optimization - set to Yes.
    Specifies that the program will be optimised across .obj boundaries.
    Note.pngNote:Memory requirements can be very high when compiling with Whole Program Optimization on

C/C++

  • Optimization -> Optimize for Processor - set to Pentium 4 and Above(/G7)
    The G7 flag produces code which is optimised for Pentium 4 processors and above which, in some cases can lead to a 10% improvement in execution speed. The code will still run on older processors, just not as fast.
  • Code Generation -> Enable Enhanced Instruction Set - set to Streaming SIMD Extensions (/arch:SSE)
    The arch flag enables the use of instructions found on processors that support enhanced instruction sets e.g., the SSE and SSE2 extensions of Intel 32-bit processors.
    Note.pngNote:Be careful with this setting as it will prevent the code running on processors which don't support these extensions
  • Command Line -> Additional Options - add the switch /GL.
    The GL flag enables whole program optimization.

Linker

  • Optimization -> Enabled COMDAT Folding - set to Remove Redundant COMDATs (/OPT:ICF)
    /OPT:ICF removes redundant COMDAT symbols from the linker output.
  • Optimization -> Optimize for Windows98 - set to No (/OPT:NOWIN98)
    /OPT:NOWIN98 controls the section alignment in the final image. You should use this switch when building DLL's only for Windows NT, Windows 2000, Windows XP or later.
  • Command Line -> Additional Options - add the switch /LTCG.
    The /LTCG option tells the linker to call the compiler and perform whole program optimization.
    Note.pngNote:You should only need to use /LTCG if you built the vgui_controls.lib with the fixes.

Notes

It will take longer for it to link the code, but it will run faster than with the default settings.

You can enable SSE (Streaming SIMD Extensions) optimizations due to the minium requirements of HL2 being a 1.2 GHz CPU, that defaults to a Pentium 4 or AMD Athlon processor that supports this technology.

External Links