コンテンツにスキップ

Tracy プロファイラー - リアルタイムフレームプロファイラー チートシート

Tracy プロファイラー - リアルタイムフレームプロファイラー チートシート

Tracy はリアルタイム、ナノ秒解像度ハイブリッドフレーム・サンプリングプロファイラーで、ゲームと低遅延 C++ と Rust で広く使用されます。コードに軽量なゾーンマクロを追加し、Tracy はタイミングデータをデスクトップ UI にライブストリームします。プログラムの実行中に、すべてのフレーム、すべてのゾーン、GPU タイミング、メモリ割り当て、ロック競合が見えます。手動インストルメンテーション と自動サンプリングの組み合わせは、正確なセマンティックゾーンと帰属しないホットスポットの両方を提供。

インストール

コンポーネント方法
サーバー (UI)リポジトリから profiler/ をビルドまたはリリースをダウンロード
クライアント (ライブラリ)ビルドに TracyClient.cpp + ヘッダーを追加
Rustcargo add tracy-client (または tracing-tracy)
有効化TRACY_ENABLE を定義して コンパイル
確認UI を起動; クライアント接続を待つ

C++ をインストルメント化

#include "tracy/Tracy.hpp"

void update() {
    ZoneScoped;                    // 関数名のゾーン
    physics();
}

void render() {
    ZoneScopedN("Render Pass");    // 明示的な名前
    ZoneColor(0x00FF00);
    draw();
}

int main() {
    while (running) {
        update();
        render();
        FrameMark;                 // フレーム境界をマーク
    }
}
マクロ目的
ZoneScoped囲むスコープ時間
ZoneScopedN("name")名前付きゾーン
ZoneText(str, len)ゾーンにテキストを付加
FrameMarkフレームを区切る
TracyPlot("fps", v)時間経過による数値プロット
TracyMessage(...)タイムラインにメッセージをログ
TracyLockable(...)ミューテックスの競合を追跡

Rust をインストルメント化

use tracy_client::{Client, span};

fn main() {
    let _client = Client::start();
    loop {
        {
            let _s = span!("update");
            update();
        }
        tracy_client::frame_mark();
    }
}

または tracing-tracy クレートで tracing にワイア。既存のスパン自動的に Tracy に表示されます。

メモリ & GPU

機能方法
割り当て追跡TracyAlloc(ptr, size) / TracyFree(ptr)
カスタムアロケーターalloc/free をマクロでラップ
GPU ゾーン (Vulkan/D3D/OpenGL)TracyVkZoneTracyD3D12Zone など
GPU コンテキスト一度作成、次でゾーン添付

UI

ビュー表示
タイムラインスレッド別ゾーン、フレーム別
統計ゾーン別集計時間
ゾーンを検索1 つのゾーン期間のヒストグラム
比較2 つのキャプチャを diff (変更前/後)
メモリ割り当てタイムラインと漏洩
ロックスレッド間の競合
フレームグラフ集計呼び出し構造

ワークフロー: フレームスパイクを追跡

ステップアクション
1クライアント接続で実行; ヒッチを再現
2タイムラインで長いフレームを見つける
3ズーム — どのゾーンが支配?
4そのゾーンの「ゾーン検索」を開く → 期間ヒストグラム
5アウトライアーのコンテキストをチェック (ロック、割り当て、GPU 待機)
6修正、再度キャプチャ、比較で改善を証明

2 つのキャプチャを比較するワークフローは Tracy の最も実用的な機能の 1 つです。「より速く感じる」を測定デルタに変えます。

サンプリングモード

手動ゾーン以外、Tracy は自動的にコールスタックをサンプリングできます (Linux/Windows)、インストルメント化しなかったコード内の時間をキャッチ。両方を組み合わせます: ゾーンはセマンティック構造を与え、サンプリングがギャップを埋めます。

Tracy 対 関連プロファイラー

側面TracyperfPerfetto
モデルインストルメント化ゾーン + サンプリングサンプリングシステム全体トレーシング
解像度ナノ秒サンプル間隔イベントレベル
ライブビューはい (リアルタイム)いいえポスト hoc
GPU サポート組み込みいいえ部分的
最適用途ゲーム、フレームベース、低遅延 C++/RustCPU ホットパスシステム全体タイムライン

perfPerfetto を補完; Tracy のエッジはライブ、フレーム指向、インストルメント化プロファイリング。

リソース