ホームページ > バックエンド開発 > Python チュートリアル > Python 3.6 辞書の実装によりメモリ使用量がどのように改善され、挿入順序が維持されるのでしょうか?

Python 3.6 辞書の実装によりメモリ使用量がどのように改善され、挿入順序が維持されるのでしょうか?

Mary-Kate Olsen
リリース: 2025-01-02 18:04:39
オリジナル
678 人が閲覧しました

How Does Python 3.6  Dictionary Implementation Improve Memory Usage and Preserve Insertion Order?

Python 3.6 : 辞書は挿入順序を保持します

Python 3.6 では、CPython 実装の辞書は挿入順序を示しますが、これは以前のバージョンとは大きく異なります。 。この機能は、Python 3.7 で保証された言語機能になりました。

メモリ使用量とパフォーマンスの向上

新しい辞書の実装により、以前の辞書と比較してメモリ使用量が 20 ~ 25% 大幅に削減されます。 Python3.5。この改善は、実装で個別の配列を使用することによって生じます。

  • dk_entries: エントリ (PyDictKeyEntry) を挿入順に保存します。
  • dk_indices: エントリのインデックスを dk_entries に保存し、ハッシュとして機能しますtable.

以前は、PyDictKeyEntry 型のスパース配列を割り当てる必要があり、パフォーマンスを考慮して無駄なスペースが発生していました。新しいアプローチでは、必要なエントリのみが割り当てられ、メモリ消費量が少ない intX_t 型のスパース配列が使用されます。

使用されるデータ構造

元々、辞書は [ として格納されていました。 「--」で示される空のエントリを持つスパース配列内の keyhash、key、value]。新しいアプローチでは、データが次のように整理されます:

  • インデックス: [なし、1、なし、なし、なし、0、なし、2]
  • エントリ: [[-9092791511155847987, 'timmy', 'red'],

            [-8522787127447073495, 'barry', 'green'],
            [-6480567542315338377, 'guido', 'blue']]
    
    ログイン後にコピー

この改訂された構造により、メモリのオーバーヘッドが大幅に削減されます。

挿入順序の利点

その間新しい辞書の実装は主にメモリの最適化に重点を置いており、挿入順序機能には次のような便利な用途があります。

  • 辞書に追加されたオブジェクトの順序を保持します。
  • 表示のカスタマイズ

挿入順序は、異なる Python 実装または将来の言語間で保証されないことに注意することが重要です。バージョン。ただし、Python 3.7 以降では、信頼できる保証された機能です。

以上がPython 3.6 辞書の実装によりメモリ使用量がどのように改善され、挿入順序が維持されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート