This is an archived page. It's not actively maintained.



ここからリンクされている記事は、コアな Mozilla のコードやアドオン開発をしていなくてもパフォーマンスを改善する手助けになります。

A user friendly guide to reporting a performance problem. A development environment is not required.
Tips on generating valid performance metrics.
Performance best practices in extensions
A performance "best practices" guide for extension developers.
Measuring Add-on Startup Performance
A guide for add-on developers on how to set up a performance testing environment.
XUL School: Add-on Performance
Tips for add-on developers to help them avoid impairing application performance.
GPU パフォーマンス
Tips for profiling and improving performance when using a GPU.
Scroll-Linked Effects
Information on scroll-linked effects, their effect on performance, related tools, and possible mitigation techniques.
Automated Performance Testing and Sheriffing
Information on automated performance testing and sheriffing at Mozilla.
Best practices for Front-end Engineers
Tips for reducing impacts on browser performance in front-end code.


開発者ツールの "メモリー" パネル
The memory panel in the devtools supports taking heap snapshots, diffing them, computing dominator trees to surface "heavy retainers", and recording allocation stacks.
about:memory is the easiest-to-use tool for measuring memory usage in Mozilla code, and is the best place to start. It also lets you do other memory-related operations like trigger GC and CC, dump GC & CC logs, and dump DMD reports. about:memory is built on top of Firefox's memory reporting infrastructure.
DMD is a tool that identifies shortcomings in about:memory's measurements, and can also do multiple kinds of general heap profiling.
Are We Slim Yet (a.k.a. AWSY) is a memory usage and regression tracker.
BloatView prints per-class statistics on allocations and refcounts, and provides gross numbers on the amount of memory being leaked broken down by class. It is used as part of Mozilla's continuous integration testing.
Refcount tracing and balancing
Refcount tracing and balancing are ways to track down leaks caused by incorrect uses of reference counting. They are slow and not particular easy to use, and thus most suitable for use by expert developers.
GC と CC のログ
GC and CC logs can be generated and analyzed to in various ways. In particular, they can help you understand why a particular object is being kept alive.
Valgrind is a tool that detects various memory-related problems at runtime, including leaks. Valgrind is used as part of Mozilla's continuous integration testing, though the coverage is limited because Valgrind is slow.
LeakSanitizer (a.k.a. LSAN) is similar to Valgrind, but it runs faster because it uses static source code instrumentation. LSAN is part of Mozilla's continuous integration testing, with most tests running through it as part of the AddressSanitizer (a.k.a. ASAN) test jobs.
Apple のツール
Apple は、Mac OS X 向けに LSAN や Valgrind によってレポートされる問題と似た問題をレポートするツールを提供します。この「リーク」ツールは、SpiderMonkey や Firefox で使用することは推奨されません。タグ付けされたポインターによって混乱し、オブジェクトが存在しない場合、リークを引き起こすためです (bug 390944 をご覧ください)。
Leak Gauge
Leak Gauge は、ドキュメント、ウィンドウオブジェクト、docshell を含む、Gecko 内の特定の種類のリークを検出するのに使用できます。
LogAlloc は、Gecko 内のメモリー割り当てのログのダンプを取得するツールです。That log can then be replayed against Firefox's default memory allocator independently or through another replace-malloc library, allowing the testing of other allocators under the exact same workload.
The memory profiler samples allocation events and provides different views to analyze the allocation characteristic.

See also the documentation on Leak-hunting strategies and tips.


Profiling with the Developer Tools Profiler
The profiler built into the developer tools has a high-level waterfall, detailed call tree, allocations and GC profiling, and flame graphs. It is available on all platforms and release channels, and also supports remote profiling b2g and Fennec.
Profiling with the Gecko Profiler Addon
The Gecko Profiler Addon is a good tool to start with.
Profiling with Instruments
How to use Apple's Instruments tool to profile Mozilla code.
Profiling with Xperf
How to use Microsoft's Xperf tool to profile Mozilla code.
Profiling with Concurrency Visualizer
How to use Visual Studio's Concurrency Visualizer tool to profile Mozilla code.
Profiling with Zoom
Zoom is a profiler for Linux done by the people who made Shark
Measuring performance using the PerfMeasurement.jsm code module
Using PerfMeasurement.jsm to measure performance data in your JavaScript code.
Adding a new Telemetry probe
Information on how to add a new measurement to the Telemetry performance-reporting system
Profiling JavaScript with Shark
How to use the Mac OS X Shark profiler to profile JavaScript code in Firefox 3.5 or later.
Profiling with Shark
How to use Apple's Shark tool to profile Mozilla code.
Investigating CSS Performance
How to figure out why restyle is taking so long

Power profiling

Power profiling overview
This page provides an overview of relevant information, including details about hardware, what can be measured, and recommended approaches. It should be the starting point for anybody new to power profiling.
tools/power/rapl (Mac, Linux)
tools/power/rapl is a command-line utility in the Mozilla codebase that uses the Intel RAPL interface to gather direct power estimates for the package, cores, GPU and memory.
powermetrics (Mac-only)
powermetrics is a command-line utility that gathers and displays a wide range of global and per-process measurements, including CPU usage, GPU usage, and various wakeups frequencies.
TimerFirings logging (All platforms)
TimerFirings logging is a built-in logging mechanism that prints data on every time fired.
dtrace (Mac-only)
dtrace is a powerful kernel instrumentation tool. One of its many features is the ability to instrument wakeups in a high-context fashion.
Activity Monitor, Battery Status Menu and top (Mac-only)
The battery status menu, Activity Monitor and top are three related Mac tools that have major flaws but often consulted by users, and so are worth understanding.
Intel Power Gadget (Windows, Mac, Linux)
Intel Power Gadget provides real-time graphs for package and processor RAPL estimates. It also provides an API through which those estimates can be obtained.
perf (Linux-only)
perf is a powerful command-line utility that can measure many different things, including energy estimates and high-context measurements of things such as wakeups.
turbostat (Linux-only)
turbostat is a command-line utility that gathers and displays various power-related measurements, with a focus on per-CPU measurements such as frequencies and C-states.
powertop (Linux-only)
powertop is an interactive command-line utility that gathers and displays various power-related measurements.
JavaScript, XPCOM, Developing Mozilla, Extensions, Addons