私はpythonプログラムを書いています。Windowsで動作するように、プログラムには重いスレッドとI/Oがあり、I/Oでソケットを多用してリモートの場所からデータを送受信します。それ以外に、いくつかの文字列操作があります正規表現を使用します。
私の質問は次のとおりです。たとえば、Java や C# と比較して、Python はそのようなプログラムに最適なプログラミング言語ですか? 上記の説明により適した別の言語はありますか?
私はpythonプログラムを書いています。Windowsで動作するように、プログラムには重いスレッドとI/Oがあり、I/Oでソケットを多用してリモートの場所からデータを送受信します。それ以外に、いくつかの文字列操作があります正規表現を使用します。
私の質問は次のとおりです。たとえば、Java や C# と比較して、Python はそのようなプログラムに最適なプログラミング言語ですか? 上記の説明により適した別の言語はありますか?
興味深い質問です。ソケットを扱う Python モジュールは、基盤となる OS 機能を直接ラップします。したがって、特定の操作では、ラッパー言語によって速度の違いが見られる可能性はほとんどありません。
Python の速度の問題に気付くのは、ストリーム内のすべての文字を見るなど 、非常にタイトなループに関与している場合です。
送信しているデータの量を示していません。膨大な量の I/O を維持する必要があるソリューションを実行している場合を除き、python で問題なく動作する可能性があります。Pythonでnginxまたはmemcachedまたはredisを実装する...あまり良い考えではありません。
そしていつものように... ベンチマーク。それが十分に速いなら、なぜ変更するのですか?
PS。あなたのプログラマーは、おそらくPythonでより速くそれを成し遂げるでしょう!
要件は次のとおりです。
このタスクに最適な言語を断定するのが難しい理由は、ほとんどすべての言語が要件に適合するためです。
最も興味深い制約は、大規模な同時 IO を実行する必要があることです。これは、ボトルネックがコンテキストの切り替え、スレッドのコスト、および複数のコアでスレッド プールを実行できるかどうかにあることを意味します。スケーリングによっては、複数のコアを簡単に使用できる軽量スレッドを備えたコンパイル済み言語を使用することをお勧めします。これにより、リストは C++、Haskell、Erlang、Java、Scala に絞り込まれます。フォークされたプロセスを使用することで、Python のグローバル インタープリター ロックを回避できる可能性があります。