Cythonを使用してDjangoで開発されたミッションクリティカルなアプリケーションの速度を最適化することは可能ですか?
最近インターネットで読んだところによると、CythonはPythonコードをCのような速度に変えることができます。これはDjangoで可能ですか?
Cythonを使用してDjangoで開発されたミッションクリティカルなアプリケーションの速度を最適化することは可能ですか?
疑わしいです。
Webアプリケーションの応答時間のほとんどは、HTML以外の要素であり、個別にダウンロードする必要があります。通常の経験則では、HTMLページごとに8つの静的ファイルがあります。(.CSS、.JS、画像など)
その静的コンテンツはいずれもDjangoからのものではないため、WebアプリケーションのタイムラインのほとんどはApache(またはNginxまたはDjango外の他のサーバーソフトウェア)です。
HTMLを生成する時間だけを見ると、ほとんどの時間がデータベースの待機に費やされていることがわかります(メモリ内のSQLiteであっても、データベースがタイムラインを支配する傾向があることがわかります)。
Apacheとデータベースの高速化が完了したら、Python要素を検討できます。
結論。DjangoとPythonを高速化するために時間を無駄にしないでください。
ええ、そうですが、Webアプリが行うほとんどのことは、そうなるという確固たる証拠がない限り、この種の変更から実際に恩恵を受けることはありません。プロファイルを2回、最適化を1回。
概念的にはあなたが求めていることは可能ですが、あなたは間違った方向を見ています。
Django(およびPython)コミュニティにとって非常に有望なテクノロジーであるPyPyに本当に興味があるはずです。PyPy上のDjangoのベンチマークは、通常のPythonと比較した場合にすでに12.5倍の速度向上を示しています。フロントエンドの静的リソースがエンドユーザーへのページの応答性の大部分に寄与する可能性がありますが(上記のS.Lottの回答による)、これはサーバー側での速度の向上が非常に重要であるという現実に対処していません。Facebookはこの理由でHipHopPHPを発明しなければなりませんでした...PHPの遅れはそれをカットすることができませんでした。家の近くでは、Meebo(Python駆動のサイト)がサーバーインフラストラクチャに月に数万米ドルを費やしていると考えてください。PyPyでサーバーのコスト削減を味わうことができますか?セクシー!
ベンチマークをチェックしてください:http ://speed.pypy.org/
他の答えを反映して、もちろん、何らかの利益が得られる可能性のある特定のケースをプロファイルしていない限り、これによって特定の利益が得られる可能性はほとんどありません。
答えに加えて、YahooのWebチームからのWeb最適化のリストを指摘したいと思います。これらは、多くのWebサイトに適用可能であり、調査する価値のある分野で測定され、証明された利益です。
Exceptional Performanceチームは、Webページを高速化するためのいくつかのベストプラクティスを特定しました。このリストには、7つのカテゴリに分類された35のベストプラクティスが含まれています。
InProdと呼ばれる顧客サイトにインストールされるアプリケーションを構築しました。これは、Genesysを利用したコンタクトセンターの構成を管理します。CythonでコンパイルされたDjangoアプリケーションです。
速度は向上しますが、それほど大きくはありません。1秒あたりに多くのリクエストを処理する必要がありますが、これを行う際の主な遅延はデータベースが原因です。最大のメリットは、データベースの調整と優れたSQLによって実現されることです。
あなたはそれが進行中の問題を引き起こすようなことをするために本当に強い必要性を持っている必要があります、それは私たちのテスト要件を増やします。
一部のタスクではパフォーマンスの違いが大きくなる可能性がありますが、すべてではありません。したがって、改善はアプリケーションが何をしているかによって異なります。
バックエンド側に重いプロセスがあるかどうかによって異なります。私の場合、プロセスの1つを改善し、最大5倍の速度を上げることができます。ユーザーが入力した大きなXMLファイルを作り直してデータベースに保存する機能がありました。Cythonに、入力または出力が文字列である場所があることを伝えると、5倍のスピードアップの魔法が行われました。