Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for mazrean mazrean
February 24, 2026

Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party

Go 1.26のRelease NoteのCompilerセクションに、スライスのbacking storeをスタックに確保できるケースが増えたという記述があります。短い一文ですが、実際にはスライスのメモリアロケーションに関わる重要な変更です。
従来、関数外参照のあるスライスはbacking arrayが最初からヒープに確保されており、appendの連続でヒープアロケーションが多発していました。1.26では、まずスタックに確保し、必要な場合のみreturn時にヒープへコピーする方式に変更されています。
本スライドでは、スタック・ヒープの基礎とスライスのメモリ配置の関係から、1.26での変更内容、ベンチマーク結果(capなしで約20%の実行時間削減)、そしてcap付き確保時にわずかなオーバーヘッドが生じるトレードオフまでを整理しています。

Avatar for mazrean

mazrean

February 24, 2026
Tweet

More Decks by mazrean

Other Decks in Programming

Transcript

  1. ベンチマーク ▪ []intに1,000,000回append ▪ 1.25.6と1.26.0で比較 ▪ 環境 • CPU: AMD

    Ryzen 9 7950X • メモリ: DDR5 24GB x 2 23 コード:https://gist.github.com/mazrean/bd336266c955ee52ed62e3cbec48f251
  2. まとめ ▪ スライスのメモリ確保最適化 が入った • ヒープ確保の削減 ▪ 多くの場合で速度向上 ▪ トレードオフ

    を考慮して導入されている • 僅かに速度低下する場合もある • cap付きの方が速いのは変わらず 29
  3. 宣伝2(会社): DeNA.go ~ 1.26 Deep Dive ~ Go 1.26をワイワイ話して 深掘る(Not

    LT) ▪ Release Note見て議論・深掘り をする • 初心者歓迎 ▪ 明日開催 32 https://dena.connpass.com/event/381352/
  4. 宣伝3(会社): Go Junction DeNA・Cyber Agent・DMMのGo同LT会 ▪ DeNAからは以下2つの発表 • IRIAMのギフト機能の開発・運用の裏側 •

    ミューテーションテストツール ▪ 残り枠僅か! 33 https://cyberagent.connpass.com/event/381653/