info:私はDjangoを使用しています。質問:Pythonの速度は、低レイテンシのWebサービスを提供するのに十分ですか、それともPyrexを使用して関数をCに変換する必要がありますか?
4 に答える
本当に、あなたが知ることができる唯一の方法(IMO)は、それを試して見ることです。パフォーマンスの問題が発生し始めたら、プロファイルを作成し、それがコードの実行なのか、それとも遅延の原因であるのかを確認します。
個人的には問題ないと思います。しかし、繰り返しになりますが、それはWebサービスが正確に何をしているかによって異なります。
多くの人がPythonを使用してWebサービスを実装しており(したがって、Djangoはまったく存在していません)、目的に応じてレイテンシーが十分に低いことがわかります。したがって、ある意味では、答えは些細な「はい」です。
適切に答えるには、より多くの情報と研究が必要です、およびSOの形式にはあまり適していません。手始めに、「十分に速い」速度を知る必要があります(それでも、ネットワーク遅延などの他の要因によってどれだけの遅延が発生するかを把握する必要があります)。それは明らかにあなたの実装が実際に何であるかに依存します。プログラムがデータベースからレコードをフェッチするだけの場合、純粋なPythonを使用するかCを使用するかにかかわらず、コードの実行はデータベースとネットワークの遅延によっておそらく小さくなります。OTOH、任意に大きなNP困難な計算問題を解決する場合、Pythonは少し魅力的に見え始めています。OTOOH、計算問題を実装するために本当にトリッキーな問題を解決している場合、Pythonはおそらく、サービスを利用するのにかかる時間を劇的に短縮します。
実際の具体的な知識がないので、Pythonで記述された他のWebサービスの存在は、おそらくPythonで問題がないことを直感的に理解します。それを実行して、パフォーマンスのボトルネックがあるかどうかを確認する必要があります。パイレックス。考慮すべき通常の「時期尚早の最適化はすべての悪の根源である」という行があります。コードを書く前に、最適化について考えるのは時期尚早です。あなたのアプローチが決して十分に速くなることができないことが盲目的に明白でない限り、最も単純な実装で行って、後でそれをスピードアップしてください。
まだ記述していないコードをCに変換することを考える場合は、最初からCでWebサービスを記述したほうがよいでしょう。これにより、レイテンシーを可能な限り低くすることができます。
私が理解しているように、とにかくPyrexを使用したくありません。Cythonは同じもののより高度なバージョンであるため、使用する必要があります。
第二に、Cythonのようなものを使用することの利点は、Pythonでコードを記述できることです。速度が十分でない場合でも、必要なスピードアップを実現するための変更はそれほど大きくありません。
問題があることがわかっているときに最適化します。