LoginSignup
0
1

More than 3 years have passed since last update.

Python3における、ファイルを開く関数(openとcodecs.openの違いと速度比較について)

Posted at

まず結論

処理速度はopen関数の方が早い。
用途の広さではdocecs.open関数。
ソースコードの読みやすさ・シンプルさはどっちもどっち。
要は使いどころ次第でした。

きっかけ

python3の練習用に、皆様ご存知"言語処理100本ノック"をやっていると、
ファイルを開く関数が2種類あることに気付いた(openとcodecs.open)。
どちらもよく使われているっぽい。

openとcodecs.openは何が違うの?

codecs.open関数は、Python2系でエンコードしたファイルを開ける。
うん、まぁ、便利かもなぁ。
使いどころの違いとしてはそんな感じだと理解しました(指摘あれば教えてください)。

ただ、ソースコードの書き方に若干の違いがあります。以下で見ていきましょう。

ソースコードの比較

以下のようなhoge.txtを読み込むコードを作成してみます。
hoge.txt

openのソースコード

open_code
実行結果↓
open_result

open関数は、標準ライブラリに入っているため、特別importの必要はない。
そのぶん行数は短くなるが、引数名の指定が必須で野暮ったくも見える。

codecs.openのソースコード

codecs.open_code
実行結果↓
codecs.open_result

codecsライブラリをimportする必要がある。
しかし引数名の指定がないぶん1行が短く、スマートに見える。

実行速度の比較

100万回の上書き処理をさせ、その速度を比較する。
なお、実行は5回づつ行った。

比較プログラムのソースコード

結果

final_result

以上の計測結果が出た。
open関数の方が約3倍速かった。
まるで赤い彗星。

結論(冒頭の結論と同じこと書いてます)

処理速度はopen関数の方が早い。
用途の広さではdocecs.open関数。
ソースコードの読みやすさ・シンプルさはどっちもどっち。
要は使いどころ次第でした。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1