Welcome to MSDN Blogs Sign in | Join | Help

Whole Program Optimization pratical example...

I wrote those couple lines of code today as a short example of what Whole Program Optimization gives you with VC++ 7.x (although I used 8.0 Beta 1):

 

Main.cpp:

#include <iostream>

 

extern void FunctionInOtherSource( int * ) ;

 

void wmain()

{

   for( int i = 0 ; i < 10 ; )

   {

      FunctionInOtherSource( & i ) ;

      std::wcout << i << std::endl ;

   }

}

 

FunctionInOtherSource.cpp:

void FunctionInOtherSource( int * pi )

{

    (*pi)++ ;

}

 

Without Whole Program Optimization turned on (no /GL), the FunctionInOtherSource code gets called:

 

00404612  mov         dword ptr [esp+4],0

0040461A  push        edi 

0040461B  jmp         wmain+10h (404620h)

0040461D  lea         ecx,[ecx]

   {

      FunctionInOtherSource( & i ) ;

00404620  lea         eax,[esp+8]

00404624  push        eax 

00404625  call        FunctionInOtherSource (401000h)

      std::wcout << i << std::endl ;

0040462A  mov         ecx,dword ptr [esp+0Ch]

 

With Whole Program Optimization turned on (/GL), the FunctionInOtherSource code gets inlined :

 

   for( int i = 0 ; i < 10 ; )

0041599A  xor         ebp,ebp

   {

      FunctionInOtherSource( & i ) ;

0041599C  add         ebp,1

      std::wcout << i << std::endl ;

0041599F  push        ebp 

004159A0  call        std::basic_ostream<unsigned short,std::char_traits<unsigned short> >::operator<< (401900h)

 

Published Wednesday, June 30, 2004 2:29 PM by yvesdolc

Comments

Anonymous comments are disabled
 
Page view tracker