2011-06-07 13 views
0

次のうちどれが効率的ですか?例えばトークン(ランダム)にget関数を使用してgetまたはbasename()はより効率的ですか?

  1. 、:

    http://www.example.com/category/subcategory/subsubcategory?value=random $_GET['value']

  2. には、例えば、URLのトークン部分を作成し、それを解析:

    $url="http://www.example.com/category/subcategory/subsubcategory/random" basename($url)

実際、ベースネームはもっとeです爆発またはsubstr(strrchr())を使用するより効果的ですか?

+8

最適化する必要はありません事を最適化しようと停止してください。 – ThiefMaster

+6

"時期尚早な最適化はすべての悪の根源です"(など)。私はあなたに約束します、あなたは両者の間に何の違いも感じないでしょう。 1つまたは2つのCPUサイクルを節約する可能性のあるアプリケーション(設計)に適合するものを選択します。 – KingCrunch

+0

上記のコメントに続いて、コードブロックの効率/パフォーマンスをこの低*レベルで別のコードブロックと比較して判断することに興味がある場合は、いつでも自分でベンチマークすることができます。 –

答えて

2

$ _GETは、明らかに、より効率的である、あなたのスクリプトで千という数回の呼び出しを計画していない限り、それはあなたがより良い作品に感じるものは何でも使う無視できます。

$t = microtime(true); 
for($i = 0; $i<1000; $i++) { 
    $x = basename($url); 
} 
printf("%.3f\n", microtime(true) - $t); 

0.010

+0

テストbasename機能? WTF – dynamic

+0

私はなぜこれがダウン投票を得るのか分からない。私は$ _GETが速くなることを知っていますが、私はまだどれくらいの量を見るためにテストを実行しました。 $ _GETへのアクセスには約2秒かかり、ベースネームには約2秒かかりました。私がすでに知っていたことをかなり証明しています。それは問題ではありません。なぜなら、いずれか1つを数回呼び出すことになると、ミリ秒の割合で話しているからです。これを心配するよりも最適化される他のボトルネックがあります。 –

+0

@ yes123:私はあなたのポイントを見失う。 **何か**はテストすることができます、どうしてですか? –

2

basenameを使用してください。あなたがすでに持っている別の機能を作る必要はありません。この場合のパフォーマンスでも

0
  1. は、マイクロ最適化を汗しないでくださいcompletly軽微であります。
  2. マイクロ最適化を汗ばむようにしたい場合は、#1と#2を自分でテストするのはかなり簡単です。
  3. 最小限のパフォーマンスの違いにかかわらず、フレンドリーなURLを取得するため、通常は#2が優先されます。それはまだ何も

    を計算していないので

+0

おかげさまで、今後のウェブサイトでは#3を念頭に置いていきます。なぜなら、よりよく見えるURLはbasenameオプションを選択する理由として意味があるからです。しかし、私が現在働いているウェブサイトでは、私は純粋な最適化を探しています。 – user928984

関連する問題