Python 3.6 : 辞書は挿入順序を保持します
Python 3.6 では、CPython 実装の辞書は挿入順序を示しますが、これは以前のバージョンとは大きく異なります。 。この機能は、Python 3.7 で保証された言語機能になりました。
メモリ使用量とパフォーマンスの向上
新しい辞書の実装により、以前の辞書と比較してメモリ使用量が 20 ~ 25% 大幅に削減されます。 Python3.5。この改善は、実装で個別の配列を使用することによって生じます。
以前は、PyDictKeyEntry 型のスパース配列を割り当てる必要があり、パフォーマンスを考慮して無駄なスペースが発生していました。新しいアプローチでは、必要なエントリのみが割り当てられ、メモリ消費量が少ない intX_t 型のスパース配列が使用されます。
使用されるデータ構造
元々、辞書は [ として格納されていました。 「--」で示される空のエントリを持つスパース配列内の keyhash、key、value]。新しいアプローチでは、データが次のように整理されます:
エントリ: [[-9092791511155847987, 'timmy', 'red'],
[-8522787127447073495, 'barry', 'green'], [-6480567542315338377, 'guido', 'blue']]
この改訂された構造により、メモリのオーバーヘッドが大幅に削減されます。
挿入順序の利点
その間新しい辞書の実装は主にメモリの最適化に重点を置いており、挿入順序機能には次のような便利な用途があります。
挿入順序は、異なる Python 実装または将来の言語間で保証されないことに注意することが重要です。バージョン。ただし、Python 3.7 以降では、信頼できる保証された機能です。
以上がPython 3.6 辞書の実装によりメモリ使用量がどのように改善され、挿入順序が維持されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。