Pythonでは「#」を先頭に記述することでその行の文字列をコメントにする方法と、文字列を「’’’」か「”””」のトリプルクォートを使って囲うことで複数行に渡ってコメントにする方法の2パターンあります。
# コメントアウト
''' コメントアウト '''
""" コメントアウト """
プログラミングをするときは可読性を上げるためにコメントを書くことが絶対に必要な要素だと思います。
一方で、どうやってコードの実行速度を改善するかというのも常に付きまとう問題ですが、となるとコメントアウトは果たして影響するのかという疑問が発生します。
コメントアウトしたテキスト自体は読み込まれないと思いますが、「コメントアウトと判断する処理」が発生するはずなので、ごく僅かではありますがその分処理が遅くなる可能性があるのでは?ということで実際に検証してみました。
検証方法はfor文内に「改行のみ」「#(シャープ)」「”””(シングルクォーテーションでトリプルクォート)」「””””””(ダブルクォーテーションでトリプルクォート)」をそれぞれ10行記述したうえで、100万回ループする処理を1万回実行して処理時間の最大値・最小値・平均値・中央値を計測しました。
また、全ての処理時間をヒストグラムにすることで視覚的にデータを見ることができます。
改行のみ | シャープ | トリプルクォート(シングルクォーテーション) | トリプルクォート(ダブルクォーテーション) | |
最大値 | 0.106068199995207 | 0.126769399998011 | 0.220825800002785 | 0.210250000003725 |
最小値 | 0.040704400016693 | 0.042239099973813 | 0.090673800004879 | 0.087988899991615 |
平均値 | 0.049568582950067 | 0.050680618789757 | 0.106304326990043 | 0.104163296840081 |
中央値 | 0.048862299998291 | 0.049798549996922 | 0.104530149998027 | 0.102789199998369 |
ヒストグラムを見ると処理が終わるまでの時間に分かりやすく差が発生していますね。
まず「シャープ」は改行なしと比べてもそこまで差がなさそうです。もちろん処理が増えるので若干影響がありますが、まぁ許容範囲内だと思います。気にするほどの実行速度ではないということが分かったのは大きいです。
問題は「トリプルクォート」で「シャープ」と比べると明らかに時間がかかっています。平均値で見ても約2倍処理に時間がかかっていることを考えると、複数行のコメントでもなるべく「シャープ」を使いたいところ。トリプルクォートでデザインした区切りテキストでコードを分けたりしてましたが、ここまで差があるなら「シャープ」へ切り替えることも検討の余地があります。
「トリプルクォート」は「シングルクォーテーション」の方が「ダブルクォーテーション」より少しだけ遅いみたいです。私が昔PHPを使っていたころは「ダブルクォーテーションよりシングルクォーテーションの方が処理が速いからなるべくシングルクォーテーションを使おう!」みたいな認識だったのですが、今回の検証だと逆になっているのはPythonだからなのか偶然こういう結果になっただけなのかは不明。私はPythonではダブルクォーテーション派なのでこのまま使いたいと思います。
とりあえず、コメントアウトした使わないコードはちゃんと削除した方が良さそうですね。
コメント