高速化してみた。だいたい10000行で1分@new3DS≒4分@old3DSが限界かな。 問題はPRGEDIT。 PRGEDITはカレント行を決定するけど、そのためには頭からデータを読んで行番号を数えないといけない。 行番号が小さいうちはすぐ終わるけど、後ろのほうになるとたくさん探さないとわからなくなる。 それを何回もやるから遅い。 もう少し正確に言うと、 行番号をnの行を探すのに、改行記号をn個探さないといけないからだいたい「nに比例した時間」がかかる。 1行目を処理して、2行目を処理して、…ってn行目まで処理すると、合計だからn*(n-1)/2、つまりn^2に比例した時間がかかる。 nが10なら100くらいだけど、nが10000なら100000000の時間がかかるわけ。 そこを直さないといけない。