PythonのStringで空文字をif文で判定したい場合のパフォーマンス調査

2021年9月11日

今回はPythonのStringで空文字を判定したい場合のパフォーマンス調査をしていきます。

PythonでStringを空文字で判定したい場合に
if a == '':

if len(a) == 0:
の二種類あるかと思いますが、その二種類についてパフォーマスを比べてみました。

忙しい方のために最初に結論を書いてしまうと、
if a == '':
の方が
if len(a) == 0:
よりも二倍くらい早いです。

動作環境はPython3です。(Python3.7)



PythonのStringで空文字をif文で判定したい場合のパフォーマンス調査

やり方としては、簡単に実装できるtimeモジュールを使った方法を採用します。

まずは
if a == '':
についてみていきます。

作成したコードは次の通りです。

余計な処理を与えないために条件分岐の後はpassで何も処理せず飛ばしています。

3回ほど実行した結果はこちらです。

早すぎて処理時間がまばらですね。
桁数がバラバラなことに注目すると、全体の処理が早すぎて計測した結果が安定しないことが分かると思います。

念のため、
if len(a) == 0:
の場合も同じようなコードで3回計測してみます。

コードはこちらです。
こちらの方がコードの書き方がおしゃれですね。

3回計測した結果は次の通りです。

if a == '':
の場合とほぼ同じような速度ですね。

for文で1億回まわしてみる

1回条件分岐をしたのみでは早すぎて比較できないという結果だったので、for文で1億回まわしてみることにしました。

if a == '':
で1億回まわすコードはこちらです。

このコードを3回実行した結果はこちらです。

if a == '':
の場合では
大体6秒ちょっとかかるという結果になりました。

続いて、PythonでStringの判定に
if len(a) == 0:
を使った場合です。

同じようにfor文で1億回まわします。

3回実行した結果はこちらです。

if len(a) == 0:
を使う場合は大体14秒前後かかります。

結論:if a == ":の方が約2倍早い

結果としては、
if a == '':
を1億回まわすと6秒近くかかり、

if len(a) == 0:
を1億回まわすと大体14秒前後かかるという結果になりました。

よって、パフォーマンスを重視するならば、ほぼ誤差に近いですが
if len(a) == 0:
よりも
if a == '':
の方が良いです。

if len(a) == 0:
の方がやり方としてかっこいいですけどね。

終わりに

今回はPythonのStringで空文字をif文で判定したい場合について、パフォーマンスを調査した結果を書きました。

PythonやPythonを使ったライブラリやフレームワークのパフォーマンスの調査に興味があり、様々なコーディング方法の違いによる最適化の調査を行っております。
リストにまとめてあるので、よろしければ覗いてみてください。
Pythonとそのライブラリやフレームワークのパフォーマンス調査結果リスト

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

直接契約ができるフリーランスエージェント「エンハンス」を立ち上げました。
詳しくは下記LPをご参照ください。
https://enhance.decryption.co.jp/

Youtubeチャンネル開設いたしました。
チャンネル登録者10,000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






Python

Posted by ちこ