0

処理されるURLが/servername/ alpha / beta / 2 / delta / 10 / pie / 1のような特定のパターンを持つDjangoアプリケーションがあります。これで、URLに含まれるこれらのパラメーターが必要になり、それらを永続化します。 /servername/で始まるURLが呼び出されているときのデータベース。
だから私はそれを行う2つの方法があります

  1. リクエストとともにパラメータを関連するビューに渡します。この場合、正規表現により、値がそれぞれalpha、beta、2、delta、10、pie、1のparam1からparam7になります。
  2. パラメータを渡さずにリクエストのみを渡します。正規表現を使用してrequest.path_infoを解析するか、「/」でrequest.path_infoを分割して、関連するエントリを取得します

    。 CPUとメモリ、または私が気付いていない他の要因かもしれません。
    時間関数を使用して2つを比較できると思いますが、正確な画像が表示されないと思います。理論的には、どちらのアプローチが推奨され、その理由は何ですか。
4

1 に答える 1

1

オプション2は、ビューが毎回この解析を実行する必要があるため、本質的に低速ですが、Djangoの標準URLパーサーは、コンパイルされた正規表現で機能します。(のurlpatternsはurls.py、最初の実行時に1回コンパイルされます。)

ただし、どちらのアプローチでも速度の違いはごくわずかです。これがアプリケーションのボトルネックになることはありません。データベースとそのクエリ、およびアプリ内のI / O操作(ハードドライブから広範囲に書き込みまたは読み取りを行うもの)などに焦点を当てます。これらは、アプリの速度が低下する場所です。そうでなければ、あなたはあちこちでミリ秒を節約するという観点から話しているのですが、それは無駄に無意味です。

于 2011-12-13T15:45:26.113 に答える