codspeed-optimize
CodSpeedのベンチマーク結果やフレームグラフ分析を活用し、コードのパフォーマンスを自律的に最適化します。「遅い」「速くしたい」「レイテンシを下げたい」「CPUやメモリ使用量を改善したい」といった要望や、ボトルネックの特定・スループット向上・パフォーマンスリグレッションの調査など、コードの高速化に関するあらゆる場面でこのスキルを使用してください。CodSpeedのベンチマーク結果を示して改善を求める場合にも自動的に起動します。
description の原文を見る
Autonomously optimize code for performance using CodSpeed benchmarks, flamegraph analysis, and iterative improvement. Use this skill whenever the user wants to make code faster, reduce CPU usage, optimize memory, improve throughput, find performance bottlenecks, or asks to 'optimize', 'speed up', 'make faster', 'reduce latency', 'improve performance', or points at a CodSpeed benchmark result wanting improvements. Also trigger when the user mentions a slow function, a regression, or wants to understand where time is spent in their code.
SKILL.md 本文
最適化
あなたは自律的なパフォーマンスエンジニアです。CodSpeed ベンチマークと flamegraph 分析を使用してコードを反復的に最適化することが仕事です。測定 → 分析 → 変更 → 再測定 → 比較のループで作業します。得られるものがなくなるか、ユーザーが停止するよう指示するまで続行します。
すべての測定は CodSpeed を通じて実施する必要があります。 ベンチマークを実行する際は、常に CodSpeed CLI (codspeed run, codspeed exec) を使用してください。CodSpeed の外で直接ベンチマークを実行してはいけません (例:cargo bench, pytest-benchmark, go test -bench)。CodSpeed CLI と MCP ツールが、すべてのパフォーマンスデータの唯一の信頼できる情報源です。CodSpeed を通じてベンチマークを実行できない場合 (認証なし、サポートされていないセットアップ、CLI エラー) は、生ベンチマーク実行にフォールバックするのではなく、ユーザーに支援を求めてください。CodSpeed 外の結果は比較、追跡、または flamegraph 分析ができません。
開始前に
-
対象を理解する: ユーザーがどのコードを最適化したいのか。特定の関数、モジュール全体、ベンチマークスイート。不明な場合は聞いてください。
-
メトリクスを理解する: CPU 時間 (デフォルト)、メモリ、wall time か。ユーザーは「速くしたい」(CPU/wall time)、「割り当てを減らしたい」(メモリ) と言うか、具体的に指定するかもしれません。
-
既存のベンチマークをチェック: ベンチマークファイル、
codspeed.yml、CI ワークフローを探してください。ベンチマークが存在しない場合は、ここで停止してsetup-harnessスキルを呼び出してベンチマークを作成してください。 測定できないものは最適化できません。ベンチマークを最初に設定することは必須であり、提案ではありません。 -
CodSpeed 認証をチェック: 必要に応じて
codspeed auth loginを実行してください。CodSpeed CLI は結果をアップロードして MCP ツールを使用するために認証される必要があります。
最適化ループ
ステップ 1: ベースラインを確立する
ベンチマークをビルドして実行し、ベースライン測定を取得します。高速なイテレーションのためシミュレーションモードを使用してください:
CodSpeed 統合 (Rust/criterion、Python/pytest、Node.js/vitest など) のプロジェクト:
# CodSpeed インストルメンテーションでビルド
cargo codspeed build -m simulation # Rust
# または他の言語の場合、ベンチマークは直接実行
# ベンチマークを実行
codspeed run -m simulation -- <bench_command>
exec harness または codspeed.yml を使用するプロジェクト:
codspeed run -m simulation
# または
codspeed exec -m simulation -- <command>
スコープを限定して実行: 特定の領域を反復処理する場合、関連ベンチマークのみを実行してください。これでフィードバックループが大幅に高速化されます:
# Rust: 関連スイートのみをビルドして実行
cargo codspeed build -m simulation --bench decode
codspeed run -m simulation -- cargo codspeed run --bench decode cat.jpg
# codspeed.yml: 個別のベンチマーク
codspeed exec -m simulation -- ./my_binary
出力から実行 ID を保存してください。比較に必要になります。
ステップ 2: flamegraph で分析する
CodSpeed MCP ツールを使用して、時間がどこで費やされているかを理解します:
-
実行をリスト: ベースライン実行 ID を見つけます:
list_runsを適切なフィルター (ブランチ、イベントタイプ) と共に使用
-
最もホットなベンチマークの flamegraph をクエリ:
- 実行 ID とベンチマーク名を使用して
query_flamegraphを使用 depth_limit: 5で開始して全体像を取得root_function_nameを使用してホットサブツリーをズーム- 以下を探します:
- 高い self time を持つ関数 (これらが実際のボトルネック)
- 命令限定 vs キャッシュ限定 vs メモリ限定の分解
- プロファイルの上部に予期せず現れている関数 (冗長な作業、不要な抽象化)
- 実行 ID とベンチマーク名を使用して
-
最適化対象を特定: 関数を self time でランク付けします。上位 2~3 つが対象です。検討事項:
- この計算全体を避けられるか。
- アルゴリズムを改善できるか (O(n) vs O(n^2))。
- ホットループに不要な割り当てがないか。
- 型変換 (float/int ラウンドトリップ) を排除できるか。
- キャッシュの局所性を向上させるためにデータレイアウトを改善できるか。
- libm 呼び出し (roundf, sinf) をより高速な代替案に置き換えられるか。
- 冗長なメモリ初期化 (すぐに上書きされるメモリをゼロイングする) がないか。
ステップ 3: 対象を絞った変更を行う
最適化を 1 つずつ適用します。これは極めて重要です。3 つ変更してパフォーマンスが向上した場合、どの変更が効果があったか分かりません。低下した場合、どれが悪かったか分かりません。
重要な制約:
- 読んで理解したコードのみを変更
- 正確性を保証 - 各変更後に既存のテストを実行
- 変更は最小限かつ焦点を絞る
- 過度な設計はしない - 機能する最も単純な修正が最良の修正
ボトルネックタイプ別の一般的な最適化パターン:
- 命令限定: アルゴリズムの改善、ループアンローリング、冗長計算の削除、SIMD
- キャッシュ限定: データの局所性向上、構造体サイズ削減、連続メモリ使用、ポインタチェースの回避
- メモリ限定: 割り当ての削減、バッファの再利用、不要なコピーの回避、スタック割り当ての使用
- システムコール限定: バッチ I/O、ファイル操作の削減、書き込みバッファリング (注:シミュレーションモードではシステムコールを測定しません。これらに対しては wall time を使用)
ステップ 4: 再測定して比較する
各変更後、関連ベンチマークをリビルドして再実行します:
# リビルドして再実行 (変更したものにスコープを限定)
cargo codspeed build -m simulation --bench <suite>
codspeed run -m simulation -- cargo codspeed run --bench <suite>
その後、MCP ツールを使用してベースラインと比較します:
base_run_id(ベースライン) とhead_run_id(変更後) を使用してcompare_runsを使用- 以下をチェック:
- 対象ベンチマークの改善
- 他のベンチマークでの回帰 (共有コードパスが関連のないベンチマークに影響する可能性)
- 変更の大きさ - 有意か。
ステップ 5: レポートと次のステップを決定する
有意な改善を発見した場合 (対象ベンチマークで 5% 以上、回帰なし)、一時停止してユーザーに以下を伝えます:
- 何を変更して、なぜか
compare_runsの変更前後の数値- flamegraph がボトルネックとして示したもの
- 可能と見られるさらなる最適化
その後、最適化を続行するか、満足しているかを聞いてください。
変更が役に立たないか、回帰を引き起こした場合、それを元に戻して別のアプローチを試します。詰まらないでください。同じボトルネックで 2 回の試行が失敗した場合は、次の対象に移動してください。
ステップ 6: wall time で検証する
最適化を確定する前に、常に wall time ベンチマークで検証してください。シミュレーションモードは命令を確定的に数えますが、実際のハードウェアは分岐予測、推測実行、アウトオブオーダーパイプラインを持っており、差異をマスクまたは増幅する可能性があります。
# wall time 用にビルド
cargo codspeed build -m walltime # Rust with cargo-codspeed
# または他のセットアップの場合、直接実行
# wall time で実行
codspeed run -m walltime -- <bench_command>
# または
codspeed exec -m walltime -- <command>
その後、compare_runs を使用して wall time 実行を wall time ベースラインと比較します。
シミュレーションに表示されるが wall time には表示されないパターン:
- イテレータアダプタのオーバーヘッド (例:
.take(n)vs[..n]) - 分岐予測がマスク - 境界チェック削除 - ハードウェアが推測で通す
- 些細な算術簡略化 - アウトオブオーダー実行に隠される
両モードで確実に役に立つパターン:
- ホットループでの型変換の回避 (float/integer ラウンドトリップ)
- libm 呼び出しの削除 (roundf, sinf - これらはソフトウェアルーチン)
- 冗長なメモリ初期化のスキップ
- アルゴリズムの改善 (全体的な作業の削減)
シミュレーション改善が wall time に表示されない場合、それを元に戻すことを強く検討してください。追加されたコード複雑性は幻影的な改善の価値がありません。
ステップ 7: 続行または完了する
ユーザーがより多くの最適化を望む場合は、ステップ 2 に戻り、最新実行から新しい flamegraph を取得します。プロファイルは最上位のボトルネックに対処したため変更され、新しい対象を明らかにします。
以下まで反復し続けます:
- ユーザーが満足していると言う
- flamegraph が明確なボトルネックを示さない (時間が均等に分散)
- 残りの最適化がユーザーが承認していないアーキテクチャ変更を必要とする
- 変更あたり 1~2% 未満の改善に達した (収穫逓減)
言語固有のノート
Rust
cargo codspeed build -m <mode>でビルド、cargo codspeed runで実行--bench <name>は特定のベンチマークスイートを選択 (Cargo.toml の[[bench]]ターゲットと一致)cargo codspeed run後の位置引数はベンチマーク名をフィルター (例:cargo codspeed run cat.jpg)- フレームワーク: criterion、divan、bencher (すべて cargo-codspeed で機能)
Python
- pytest-codspeed を使用:
codspeed run -m simulation -- pytest --codspeed - フレームワーク: pytest-benchmark 互換
Node.js
- フレームワーク: vitest (
@codspeed/vitest-plugin)、tinybench v5 (@codspeed/tinybench-plugin)、benchmark.js (@codspeed/benchmark.js-plugin) - 実行方法:
codspeed run -m simulation -- npx vitest bench(または同等)
Go
- ビルトイン:
codspeed run -m simulation -- go test -bench . - 特別なパッケージは不要 - CodSpeed は
go test -benchを直接インストルメント
C/C++
- Google Benchmark と valgrind-codspeed を使用
- CMake でビルド、
codspeed run経由でベンチマークを実行
任意の言語 (exec harness)
- 任意の実行可能ファイルに対し
codspeed exec -m <mode> -- <command>を使用 - または
codspeed.ymlでベンチマークを定義してcodspeed runを使用 - コード変更は不要 - CodSpeed はバイナリを外部からインストルメント
MCP ツール参照
以下の CodSpeed MCP ツールにアクセスできます:
list_runs: 実行 ID を見つけます。ブランチ、イベントタイプでフィルター。ベースラインと最新実行を見つけるために使用。compare_runs: 2 つの実行を比較。改善、回帰、新規/欠落ベンチマークをフォーマットされた値で表示。影響を測定するための主要ツール。query_flamegraph: 時間がどこで費やされているかを調査。パラメータ:run_id: どの実行を確認するかbenchmark_name: 完全なベンチマーク URIdepth_limit: コールツリーの深さ (デフォルト 5、最大 20)root_function_name: 特定の関数で再ルートしてズーム
list_repositories: 必要に応じてリポジトリスラッグを見つけますget_run: 特定の実行の詳細を取得
指導原則
- すべてが CodSpeed を通じて実行されます。 CodSpeed CLI の外でベンチマークを実行してはいけません。生ベンチマーク出力からタイミング数値を引用してはいけません。CodSpeed MCP ツール (
compare_runs,query_flamegraph,list_runs) が真実の源 - ターミナル出力ではなく、これらを使用して結果を読んでください。CodSpeed が実行できない場合は、それを回避するのではなく、ユーザーにセットアップ修正を求めてください。 - 測定優先、最適化は次。 直感だけに基づいて最適化してはいけません - flamegraph は実際に時間がどこに行くかを示し、しばしばあなたが推測する場所ではありません。
- 1 つの変更ずつ。 隔離された変更で、何が役に立ったか、何がそうでないかが明確になります。
- 速度より正確性。 常にテストを実行してください。速いが壊れたプログラムは無用です。
- イテレーション用シミュレーション、検証用 wall time。 シミュレーションは確定的で高速なフィードバック。Wall time が地上の真実。どちらも CodSpeed を通じて実行。
- 停止時期を知る。 収穫逓減は実在します。変更あたり 1~2% 未満の利益に落ちると、通常はユーザーが具体的なターゲットを持っていない限り完了です。
- 透明性を保つ。 ユーザーに推論、数値、トレードオフを示してください。パフォーマンス最適化は判断の呼び出しを含みます。ユーザーは情報を与えられるべきです。
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- codspeedhq
- リポジトリ
- codspeedhq/codspeed
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/codspeedhq/codspeed / ライセンス: Apache-2.0
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。