GoLand 2026.2 Help

構造体の最適化

構造体の最適化 ツールは非効率な構造体レイアウトを検出し、Go アプリケーションのメモリ使用量を削減できます。

Go では、構造体のフィールド順がメモリの位置合わせに影響します。 最適でないフィールド順は、余分なパディングバイトを発生させ、構造体全体のサイズを増加させることがあります。

例えば、次の構造体レイアウトは非効率です:

type Inefficient struct { A byte // 1 byte B int32 // 4 bytes C byte // 1 byte }

構造体は、次のようにメモリ上に配置されます:

  • フィールド A は 1 バイトを占有します。

  • 次の 3 バイトは、フィールド B を 4 バイト境界に揃えるためのパディングです。

  • フィールド B は 4 バイトを占有します。

  • フィールド C は 1 バイトを占有します。

  • さらに 3 バイトのパディングが追加され、構造体全体のサイズが最大位置合わせ要件に一致します。

その結果、構造体のフィールドは 6 バイトしか必要ないのに、構造体全体はメモリ上で 12 バイトを占有します。

より効率的なレイアウトでは、大きいフィールドを先に並べます:

type Efficient struct { B int32 // 4 bytes A byte // 1 byte C byte // 1 byte }

このレイアウトによりパディングが減り、構造体全体のサイズも小さくなります。

GoLand は非効率な構造体レイアウトを検出し、最適化されたフィールド順を提案します。 これにより、プログラムの挙動を変えずにメモリ使用量を削減できます。

構造体の最適化分析を実行する

ファイル、未コミットのファイル、カスタムスコープ、またはプロジェクト全体を分析できます。

構造体の最適化分析を実行する

  1. メインメニューから 表示 | ツールウィンドウ | Go パフォーマンス最適化 を選択します。

  2. Go のパフォーマンス最適化 ツールウィンドウを開きます。

  3. 構造体の最適化 を選択します。

  4. 分析スコープを選択します:

    • プロジェクト全体

    • 未コミットのファイル

    • ファイル

    • カスタムスコープ

    構造体の最適化分析

その後、GoLand はエディター内で非効率な構造体レイアウトを直接ハイライトし、クイックフィックスを提供します。

構造体の最適化インスペクションを有効化する

エディター内で構造体レイアウトのインスペクションを有効化すると、コーディング中に非効率なレイアウトを検出できます

Go パフォーマンス最適化ツールウィンドウからインスペクションを有効化する

  1. メインメニューから 表示 | ツールウィンドウ | Go パフォーマンス最適化 を選択します。

  2. Go のパフォーマンス最適化 ツールウィンドウを開きます。

  3. 構造体の最適化 を選択します。

  4. デフォルトで '構造体の最適化' インスペクションを有効にする を有効にします。

IDE 設定からインスペクションを有効化する

Ctrl+Alt+S を押して設定を開き、 エディター | インスペクション に移動します。

  1. Go|一般|構造体フィールドの位置合わせ​ を展開します。

  2. インスペクションのチェックボックスを有効化します。

  3. オプションで、 パディングが次の値を超える場合のみ強調表示 (バイト) でインスペクションの閾値を構成します。

その後、GoLand はエディター内で非効率な構造体レイアウトを直接ハイライトし、クイックフィックスを提供します。

構造体の最適化ハイライト

最適化の提案を確認する

GoLand が非効率な構造体レイアウトを検出すると、無駄なメモリの量を報告し、最適化されたフィールド順を表示します。

インスペクション結果には以下が含まれます:

  • 現在の構造体レイアウト

  • 位置合わせのために追加されたパディングバイト

  • 最適化されたレイアウト

  • 推定されるメモリ削減量

インスペクション結果を選択して、現在と最適化後のレイアウトを比較できます。

構造体の最適化結果

最適化を適用する

GoLand が非効率な構造体レイアウトを検出した後、提案された最適化をエディターから、またはインスペクション結果から適用できます。

エディターでクイックフィックスを適用する

  1. ハイライトされた構造体宣言にキャレットを置きます。

  2. Alt+Enter を押す。

  3. 構造体 'StructName ' のレイアウトを更新 を選択します。

    構造体の最適化のクイックフィックスを適用する

インスペクション結果から最適化を適用する

  1. Go のパフォーマンス最適化 ツールウィンドウでインスペクション結果を選択します。

  2. 提案されたフィールド順を確認します。

  3. 更新 をクリックしてください。

2026 年 7 月 14 日