2011-02-08 11 views
0

以下のコードは、ユーザーがコントロールパネルにアクセスしたときに、クイック検証プロセスを実行してエンティティの内容を検証します。たとえば、ユーザーがレベル1の場合、ビデオフィードへのアクセスのみが許可されます。これは、他に利用可能なものがないことを意味します。PHPケーススイッチ(効率)

私はコードを見ると、ケース1と3が呼び出されたときにビデオフィードが呼び出されるのがわかります。私はおそらくコードをより効率的にするための選択肢を楽しむだろう。

私は可能な配列が少し楽になるかもしれないと言われましたが、もう一度これは速くなります。

switch ($_SESSION['permission']) { 
     case 1: // Level 1: Video Feed 
      include ("include/panels/videofeed.index.php"); 
      break; 
     case 2: // Level 2: Announcements/Courses/Teachers 
      include ("include/panels/announcements.index.php"); 
      include ("include/panels/courses.index.php"); 
      include ("include/panels/teachers.index.php"); 
      break; 
     case 3: // Level 3: Announcements/Video Feed/Courses/Teachers/Accounts/Logs 
      include ("include/panels/announcements.index.php"); 
      include ("include/panels/videofeed.index.php"); 
      include ("include/panels/courses.index.php"); 
      include ("include/panels/teachers.index.php"); 
      include ("include/panels/accounts.index.php"); 
      include ("include/panels/log.index.php");  
      break; 
     case 4: // Level 4: Teachers 
      include ("include/panels/teachers.index.php");   
    } 
+0

難読化されたコードを0.0000001秒にする必要がある場合は、そうではありません。各開発者は読みやすいコードを記述する必要があります。最適化するのは簡単です(ただし、そうはしません)。 – zerkms

+1

私はこれがかなり容認されているようだが、確かにコンピュータにとっては非効率的ではない。あなたはおそらくいくつかのコードをシャッフルすることができますが、根本的に多くの変更を加えることはできません。 – deceze

+1

あなたはマジックナンバーの使用を止め、パーミッションレベルを説明する代わりにいくつかの定数を定義する必要があります。例:「PERMISSION_VIDEO_FEED」 – deceze

答えて

1

可能であれば、require_onceを使用する場合は、フリーリストに実行するとよいでしょう。 2つ目は、すべてのURLが同じであると思われるURLを短縮することです。

たぶん例えば機能でそれを使用しよう:

間違いましたか?私を正す!

+0

これは信じられないほどです!私はそのフェッチの方法について忘れていました。私はいくつかのベンチマークを実行しますが、私はこれをたくさん好んでいます!それは私がセットアップを描いたものです。 :) – blanknamefornow

4

これは問題ありません。私は、あなたが "繰り返し"を参照するときにあなたが "効率"を意味しないと思う。スイッチのフォールスルーを使用してコードを圧縮することができます。

これによりコードが小さくなる可能性がありますが、効率(スクリプトの実行に要する時間)に大きな影響はなく、実際にはコードを読みにくくします。それを残す。

+0

ファイルをホストしている現在のサーバーが圧縮の形式を使用していないため、効率が悪くなります。私の場合、0.06秒でロードされますが、それ以上の圧縮はありません。 – blanknamefornow

+0

転倒しても、どうやって衝突なしにするのですか?私はおそらくいくつかのスイッチを行う必要があることを知っているので? – blanknamefornow

+0

@tjm確かに、スクリプトを4行短くしても、スクリプトの読み込み速度はかなり速くなりません。圧縮について言及するときは、HTTP応答で圧縮を言いますが、これはこの質問とは関係ありません。 – Artefacto