Your Search Results

    Building with Profile-Guided Optimization

    この記事はまだ日本語に翻訳されていません。MDN の翻訳はボランティアによって行われています。是非 MDN に登録し、私たちの力になって下さい。

    Introduction

    The Mozilla build system contains support for building with Profile-Guided Optimization (PGO) with GCC 4 or newer and Microsoft Visual C++ 2005 (Professional Edition) or newer. A PGO build consists of two passes: a first pass to build instrumented binaries, then a second pass to re-build optimized binaries using profile information gleaned from running the instrumented binaries. The Mozilla build system will run both passes for you, as well as a profile generation script in between.

    Getting Started

    In order to build Firefox with Profile Guided Optimizations, you should first make sure that you can do a simple build of Firefox.  You need to set up the build prerequisites and environment.  You must have tests enabled (do not include --disable-tests in your build configuration). Then run make -f client.mk profiledbuild (see the Building section below.)

    The profile generation script

    The Mozilla build system will run the pgo-profile-run make rule from testing/testsuite-targets.mk, which in turn runs the build/pgo/profileserver.py script. You can customize any of these two if you need the profile generation to happen differently from the default.

    Building

    PGO builds require you to start your build from a different target in client.mk. Instead of the usual make -f client.mk build, you simply do make -f client.mk profiledbuild.

    Note: PGO builds will take much longer than normal builds! With GCC, you will wind up doing two complete clobber builds. With MSVC, you will only do one full build, and then another pass of re-linking, but re-linking libxul can take over a half hour on a fast machine, and use over one gigabyte of RAM.
    Warning: Linking a PGO build is known to exhaust the 32 bit address space on Win32.  To work around this either use a 64 bit compiler or use the /3GB boottime switch to give the linker more address space.  See Bug 543034 for details.

    Document Tags and Contributors

    最終更新者: MattBrubeck,