@echo off rem A batch program to build PGO (Profile guided optimization) by first rem building instrumented binaries, then running the testsuite, and rem finally building the optimized code. rem Note, after the first instrumented run, one can just keep on rem building the PGUpdate configuration while developing. setlocal set platf=Win32 set parallel=/m set dir=%~dp0 rem use the performance testsuite. This is quick and simple set job1="%dir%..\tools\pybench\pybench.py" -n 1 -C 1 --with-gc set path1="%dir%..\tools\pybench" rem or the whole testsuite for more thorough testing set job2="%dir%..\lib\test\regrtest.py" set path2="%dir%..\lib" set job=%job1% set clrpath=%path1% :CheckOpts if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts if "%1"=="-2" (set job=%job2%) & (set clrpath=%path2%) & shift & goto CheckOpts if "%1"=="-M" (set parallel=) & shift & goto CheckOpts rem We cannot cross compile PGO builds, as the optimization needs to be run natively set vs_platf=x86 set PGO=%dir%win32-pgo if "%platf%"=="x64" (set vs_platf=amd64) & (set PGO=%dir%amd64-pgo) rem Setup the environment call "%dir%env.bat" %vs_platf% rem build the instrumented version msbuild "%dir%pcbuild.proj" %parallel% /t:Build /p:Configuration=PGInstrument /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 rem remove .pyc files, .pgc files and execute the job "%PGO%\python.exe" "%dir%rmpyc.py" %clrpath% del "%PGO%\*.pgc" "%PGO%\python.exe" %job% rem build optimized version msbuild "%dir%pcbuild.proj" %parallel% /t:Build /p:Configuration=PGUpdate /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9