Pythonのチューニング

TODO:

《参考書籍》

内包表記の使用

listb や dict の各要素に対して何らかの処理を行うような場合は、内包表記を使用した方が高速

確認用コード

# coding: utf-8
"""内包表記の処理速度確認.

リストの各値に+Nする処理の速度をforループと内包表記で比較する。

"""

import time

def normal(list1, num):
    stime = time.time()
    result = []
    for i in list1:
        result.append(i + num)
    print('forループ - {}'.format(time.time() - stime))
    return result


def tuning(list1, num):
    stime = time.time()
    result = [i + num for i in list1]
    print('内包表記 - {}'.format(time.time() - stime))
    return result


if __name__ == '__main__':

    # 確認用のリスト
    list1 = range(10000)

    # forループ
    result1 = normal(list1, 2)

    # 内包表記
    result2 = tuning(list1, 2)

    # 一応結果が同じか確認
    print(result1 == result2)

結果確認

forループ - 0.001007080078125
内包表記 - 0.0006196498870849609
True

高階関数の使用

ユニバーサル関数の使用

グローバル変数を使用しない

ループの中で自前の関数を呼ばない

大きな変数は使用後にdelする

numba(jitコンパイラ) による高速化

その他

同じ事を行う場合でも記述方法によってパフォーマンスは変わる

list や dict の参照コストも考慮する

可読性とはトレードオフな部分がある


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS