アプリ版:「スタンプのみでお礼する」機能のリリースについて

例えば1つのディレクトリに10万個の画像があった場合に、同じディレクトリ内にperlで新しい画像を作ったり削除したりすると、処理速度が遅くなってしまいます。(作成や削除に時間がかかったりする)

違うディレクトリではスムーズに画像を作成したり、削除したりできるのですが、大量のファイルがあった場合は遅くなってしまうようです。

perlでファイルを作ったり削除するのに、ファイル数が多いからという理由で速度が遅くなるものでしょうか。

また、何か対策をご存知であれば教えていただけると嬉しく思います。


よろしくお願いします。

A 回答 (3件)

ディレクトリの中から目的のファイルを探すための時間に、差が出る可能性は有ります。


ただ、単に「指定した名前のファイルを削除」とかだったら、極端に遅くなるとは考えられません。

何か、他の処理で時間がかかっているのでは?
例えば、「削除対象のファイルかどうかを、全部のファイルについて個々に調査している」とか

この回答への補足

ありがとうございます。

>例えば、「削除対象のファイルかどうかを、全部のファイルについて個々に調査している」とか

こちらは全部のファイルから対象のファイルがあるかどうかの存在確認をしてといった意味でしょうか?

もしそうでしたら、そういう風な使い方はしております。

このような場合は速度が落ちてしまうものなのでしょうか。

補足日時:2014/08/28 00:20
    • good
    • 0

遅くなりませんよ。

RAMDISKでファイルアクセスを実験したので参考程度ですが、
10万個のファイルのあるディレクトリで、perlで1万回ファイル作成と削除を繰り返しても0.2秒程度です。

$ cat hoge.sh
mkdir -p /tmp/file_test
cd /tmp/file_test
touch test_{1..100000}.txt
time perl -e 'for (1 .. 10000){open my $fh, ">", "hoge.txt"; print {$fh} "hoge"; close $fh; unlink "hoge.txt";}'


$ bash hoge.sh
real0m0.202s
user0m0.068s
sys0m0.132s
    • good
    • 0
この回答へのお礼

調査していただきありがとうございます。

他に原因があるのかやってみましたが、やはり遅くなってしまいます。

再度最初からやってみたいと思います。

ありがとうございました。

お礼日時:2014/08/28 00:17

確認ですが, 「perlで」遅いということでしょうか? いいかえると


Perl 以外の言語で書いたプログラムでは遅くないんだけど Perl でプログラムを書いたときだけ遅い
ということでしょうか?

この回答への補足

perl以外の言語は使った事がありませんが、linuxのコマンド等で削除したり操作する際は特に遅く感じません。

なので原因がよく分からないのですが…

補足日時:2014/08/22 16:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!