python3.7くらいの時に pythonのdictが標準でOrderedDictを使うようになった, ということがありました.

そこで 3.5と3.8の間で辞書の処理に時間が掛かるようになったかどうかを比較しましょう.

具体的には それなりに大きい 文字列をキーとして文字列をバリューとする辞書を作成してみましょう:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import random
import timeit
from string import ascii_letters as characters


def ran_str(size: int) -> str:
    return ''.join([random.choice(characters) for _ in range(size)])


def get_ran_dict(pair_size: int, str_size: int) -> dict:
    d = {}
    for _ in range(pair_size):
        d[ran_str(str_size)] = ran_str(str_size)

    return d


def main():
    get_ran_dict(50000, 200)


number_of_loop = 1
result = timeit.timeit('main()', globals=globals(), number=number_of_loop)
print(result / number_of_loop)

# Outputs:
# 18.794142761005787 (version 3.5.3)
# 13.994185419999999 (version 3.8.1)

軽くなってる !!