はじめに
Pythonで複数行のファイルを読み込む方法はたくさんあり,どの方法が早いのかを調べました.
(Wikipediaのタイトルを全部読み込んで色々としたい時に,気になったのでまとめました!)
TL;DR
ファイル全体を読み込んでsplitlinesする方法2が一番早い
方法たち
1,000,000行のファイルを読み込む.文字列の長さは多くても30くらい.
1. 一行ずつ読み込み,改行をreplaceする
def func1(file_path):
lines = []
with open(file_path, "r", encoding="utf-8") as f:
for line in f:
lines.append(line.replace("\n", ""))
return lines
2. ファイル全体を読み込んでsplitlinesする
def func2(file_path):
lines = []
with open(file_path, "r", encoding="utf-8") as f:
lines = f.read().splitlines()
return lines
3. 各行をリストにして,rstripで改行を消す
def func3(file_path):
lines = []
with open(file_path, "r", encoding="utf-8") as f:
for line in f.readlines():
lines.append(line.rstrip())
return lines
雑な予想
- 方法1の
replace
は各行の文字列を検索する+置き換えるから一番遅そう.無駄も多い - 方法2は,全体読み込んで,
splitlines
で改行を検索するから,方法1と同じくらい?for文使ってないから少し早いかも? - 方法3は,
rstrip
で場所(末尾)を指定して取り除いてるから,一番早そう
結果
- 方法1 : 0.513
- 方法2 : 0.249
- 方法3 : 0.492
となり,圧倒的に方法2が早かった.
最後に
なぜ方法2が一番早いんだ???よくわからないです(;´・ω・)
自分用メモ
ページ内リンクは
[方法2](#2-ファイル全体を読み込んでsplitlinesする)
みたいに,空白はダッシュに置換,ピリオドは無視する