find と sed で複数ファイルを一括置換する場合、「渡す文字列の長さ」と「結果が表示されるまでの速度」には関係がありますか？


> /var/www/html/lib/a/b/c/filename_x.php

上記を下記へ置換する場合、「ファイル名だけを指定する場合」と「フルパスを指定する場合」で置換実行処理速度に違いはありますか？

> /var/www/html/lib/a/b/c/filename_z.php

・長い文字列の方が見つけやすい気もするし、短い文字列の方が処理が軽い気もするし、違いがあれば知りたいと思い質問しました

* * *

ファイル名だけを指定する場合の一例

[code]

    $ find . -type f -name '*.php' -exec sed -i 's%filename_x.php%filename_z.php%g' {} +
    
[/code]

フルパスを指定する場合の一例

[code]

    $ find . -type f -name '*.php' -exec sed -i 's%/var/www/html/lib/a/b/c/filename_x.php%/var/www/html/lib/a/b/c/filename_z.php%g' {} +
    
[/code]




どちらが速いかは`sed`の実装しだいです。素直な正規表現マッチングをしていたらパターンが短い方が速いでしょうし、最適化でBM法を使っていたらパターンが長い方が速いことがあります。

いずれにしても、体感できるような差が出ることは稀ですので、悩んでいる時間があったらどちらでもいいから実行してしまえば良いと思います。




どちらが速いかは`sed`の実装しだいです。素直な正規表現マッチングをしていたらパターンが短い方が速いでしょうし、最適化でBM法を使っていたらパターンが長い方が速いことがあります。

いずれにしても、体感できるような差が出ることは稀ですので、悩んでいる時間があったらどちらでもいいから実行してしまえば良いと思います。

