質問: await message.Content.ReadAsStringAsync(); Console.WriteLine(response); } } } ```
回答: > > ただいま別言語を使って次のようなソースコード(例でC#で載せています)を実行する処理を書いているのですが、時間がかかってしまいます。 > > > ご質問のコードは、問題となっているコードとは別物ということですね。C#でも同様に時間がかかっているということでしょうか? 時間がかかることが問題の場合、「どこで(何の処理で)」時間がかかっているのかを調査するのが先決です。 > > 非常に時間にシビアなシステムで、ミリ秒単位(可能であればナノ秒)で遅延をなくしたいです。 > > > まず、単純な四則演算ということであれば、C/C++であろうとC#であろうとJavaであろうと、大して差はないと思います。C#もJavaもJITコンパイラーにより機械語で実行されるので、単純な処理ならC/C++に近いパフォーマンスを出せます。どのような計算をするのか判りませんが、まぁ、デスクトップPCならナノ秒以下でしょう。 問題は、通信にかかる遅延です。試しにgoogleのWebサーバーにpingを飛ばしてみましたが、応答時間は2~3ミリ秒程度でした(近い!)。同様にyahooにも飛ばしてみましたが、こちらは18ミリ秒前後でした(まぁこんなものか)。 ちなみに、有線LANでつながっているPCへのpingだと1ミリ秒程でした。 このように、通信自体でミリ秒単位の遅延が発生します。さらに言えば、HTTPリクエストともなるとサーバーの処理能力や負荷も影響するので、応答が返るまでの時間はさらに延びるでしょう。となると、ミリ秒以下の高速化など大して意味はないということになります。むしろ、遅延があっても困らない(遅延を前提とした)システム作りに注力する方が有益です。 結局のところ、C/C++・C#・Javaのいずれでも四則演算程度の単純な処理なら通信で発生する遅延よりも遥かに(ほとんど無視できるぐらいの)短時間で処理できるということになります。 ということで、お好きな言語を使えばよろしいかと思います。 > > また、そもそもC言語 or C++で次の処理のコードは書けるのでしょうか? > > > もちろん書けます。ただし、標準ではHTTP通信機能はないので外部ライブラリーを利用することになります。 > > 勝手なイメージですが、ライブラリが充実していなく学習に手間がかかるイメージです。 > > > 標準ライブラリーはC#・Javaには遠く及びませんが、有償・無償の外部ライブラリーを含めれば、その充実度はC#やJavaを遥かに上回ります。ただし、目的に合うライブラリーを見つけるのが手間といえば手間ですね。 ちなみに、C/C++で書けば無条件で速くなるのかというと、そうではありません。C/C++は作り手のスキルがダイレクトに影響する言語です。同じ目的のプログラムでも、作りが下手ならC#よりもパフォーマンスが劣るということは当然あり得ます。