メソッド1をクリーナーとして使用することをお勧めします。また、より組織化された方法1は、データベース内の悪いワードテーブルなどの他のソースからのペアを使用する機会を与えます。方法2 ..一種の別のループを必要とする
<?php
$time_start = microtime(true);
for($i=0;$i<=1000000;$i++){
// Method 1
$phrase = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy = array("pizza", "beer", "ice cream");
$phrase = str_replace($healthy, $yummy, $phrase);
}
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "Did Test 1 in ($time seconds)\n<br />";
$time_start = microtime(true);
for($i=0;$i<=1000000;$i++){
// Method2
$phrase = "You should eat fruits, vegetables, and fiber every day.";
$phrase = str_replace("fruits", "pizza", $phrase);
$phrase = str_replace("vegetables", "beer", $phrase);
$phrase = str_replace("fiber", "ice cream", $phrase);
}
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "Did Test 2 in ($time seconds)\n";
?>
なかったのTest 1(3.6321988105774秒)
なかった(2.8234610557556秒)でのテスト2
編集:さらにテストで 50kに反復された文字列、少ない反復とアドバイスからのアドバイス、その違いは非常に小さいです。
<?php
$phrase = str_repeat("You should eat fruits, vegetables, and fiber every day.",50000);
$healthy = array("fruits", "vegetables", "fiber");
$yummy = array("pizza", "beer", "ice cream");
$time_start = microtime(true);
for($i=0;$i<=10;$i++){
// Method 1
$phrase = str_replace($healthy, $yummy, $phrase);
}
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "Did Test 1 in ($time seconds)\n<br />";
$time_start = microtime(true);
for($i=0;$i<=10;$i++){
// Method2
$phrase = str_replace("fruits", "pizza", $phrase);
$phrase = str_replace("vegetables", "beer", $phrase);
$phrase = str_replace("fiber", "ice cream", $phrase);
}
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "Did Test 2 in ($time seconds)\n";
?>
は(1.1450328826904秒)でテスト1を行った
でも古い場合、このベンチマークは間違っている(1.3119208812714秒)で
方法1は高速です。 – djot
長い文字列があり、繰り返しstr_replaceが必要な場合は、str_replaceの後に結果を保存するのはなぜですか? – ajreal
ARRAYを作成してループ内に何度も何度もやっていたら、遅くなります。 – djot