Pythonのprint文で複数の引数を連結させるとパフォーマンスはどの程度悪くなる?
今回はPythonのprint文で複数の引数を連結させるとパフォーマンスはどの程度悪くなるのかについてご紹介いたします。
Pythonのprint文で複数の引数を連結させるとパフォーマンスはどの程度悪くなる?
Pythonのprint文で引数を複数渡すと、繋げて出力してくれます。
例えば、
print('this is', 'test')
と打てば「this is test」と出力されます。
上記について、最初から
print('this is test')
と繋がっている文字列を渡すソースコードと比べて
print('this is', 'test')
とprint文に複数の引数を渡す場合はパフォーマンスが悪くなるのか気になりました。
print('this is', 'test')
と複数の引数を渡してあげることによって、例えば今の例では複数の引数を渡す意味がないかもしれませんが、次のように
print(test1, test2)
と変数を渡すとき可読性が良くなる場合があります。
パフォーマンス調査に当たり、次の2つのソースコードを準備しました。
一つは単純に
print('this is test')
とstringが最初から繋いだ状態でprint関数に渡した場合のパフォーマンス調査のためのソースコードです。
print文を1000000回出力してそれを10回行い、平均のタイムを計測しております。
私はM1 Macbookの16GBのPCで調査をしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import time resultList = [] for j in range(10): testList = [] start = time.time() for i in range(1000000): print('this is ', 'test') process_time = time.time() - start print(str(j+1) + ' times.') resultList.append(process_time) ave = sum(resultList) / len(resultList) print(resultList) print('平均: ' + str(ave)) |
結果は次のようになりました。1ループ当たり約2秒です。
1 2 |
[2.111527919769287, 2.0600168704986572, 2.0419838428497314, 2.0396220684051514, 2.04484486579895, 2.0556888580322266, 2.036522150039673, 2.0326757431030273, 2.0356616973876953, 2.044257164001465] 平均: 2.0502801179885863 |
続いて
print('this is', 'test')
の場合の調査です。
同じようにprint文を1000000回出力し、それを10回繰り返してその実行時間の平均値を計測しております。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import time resultList = [] for j in range(10): testList = [] start = time.time() for i in range(1000000): print('this is', 'test') process_time = time.time() - start print(str(j+1) + ' times.') resultList.append(process_time) ave = sum(resultList) / len(resultList) print(resultList) print('平均: ' + str(ave)) |
結果は1ループ当たり約2.3秒という結果でした。
1 2 |
[2.344367027282715, 2.30936598777771, 2.3210670948028564, 2.3171401023864746, 2.321542978286743, 2.323978900909424, 2.320964813232422, 2.24891996383667, 2.4397759437561035, 2.320404052734375] 平均: 2.3267526865005492 |
パフォーマンスの調査結果は?
パフォーマンスを調査した結果、
print('this is test')
よりも
print('this is', 'test')
という書き方の方が15パーセント実行時間が遅くなるという結果でした。
よって、print文で複数の引数で渡してしまうと実行時間が長くかかってしまいます。
今回は引数が2つの場合でしたが、3つ以上などさらに引数が多くなるとさらに時間がかかってしまうことでしょう。
しかしながら、print文の出力自体はそこまで実行時間がかかるものではありません。
あくまでも多重ループの中のprint文で文字を出力するときは、引数を気持ち少なめにする程度で問題ないと思います。
パフォーマンスは求められているものの、そこまで厳格に求められていない場合はprint文の出力はあまり時間がかからないため気にしなくて問題ないかもしれません。
終わりに
今回はPythonのprint文で複数の引数を連結させるとパフォーマンスはどの程度悪くなるのかについてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません