私はC#を使用して書かれたASP.NETコア3.1ベースのプロジェクトを持っています。私は最高の時間を使用することを認識していますawait
とasync
、データベースからデータを引っ張ってファイルにアクセス、またはHTTPリクエストを作るような外部リソースにアクセスするときです。スレッドアップこのメモリ解放はので、より多くの作業が終了するのコードを待っているの周りに座っているスレッドの代わりに行われます。
しかし、私が使用してどの時点で把握しようとしていますことはasync/await
、パフォーマンスを傷つけるだろうか?スレッドを解放するプロセスは、いつんawait
と呼ばれ、タスクの完全なコストを持っているスレッドを検索していますか?
次見つかったコードは、非同期と呼ばれています。実際には、そのコードは、すべてのコードがメモリ内で実行され、外部の要求が行われないため、非同期的に呼び出す必要はありません。
public interface ILocator
{
Task<Model> ExampleAsync();
}
public class Example : Controller
{
public ILocator Locator { get; set; }
public Example(ILocator locator)
{
Locator = locator;
}
public async Task<IActionResult> Example()
{
Model model = await Locator.ExampleAsync();
return View(model);
}
}
public class Locator : ILocator
{
pubilc Task ExampleAsync()
{
Example model = new Example();
model.Status = "New";
return Task.CompletedTask;
}
}
ここで、上記のコードの同期バージョンであります
public interface ILocator
{
Model Example();
}
public class Example : Controller
{
public ILocator Locator { get; set; }
public Example(ILocator locator)
{
Locator = locator;
}
public IActionResult Example()
{
Model model = Locator.Example();
return View(model);
}
}
public class Locator : ILocator
{
pubilc Example()
{
Example model = new Example();
model.Status = "New";
}
}
コードの非同期バージョンは、不必要なまでに高いコスト/同期バージョンより低い性能を持つことになりawait/async
、使用?
ときますasync/await
良いよりも害を行いますか?
私はC#を使用して書かれたASP.NETコア3.1ベースのプロジェクトを持っています。
非同期/のawaitはあなたの増加を可能にすることを意味し、容量を(第2要求名様に)多くのことを。
非同期/のawaitを使用してポイント何でパフォーマンスを傷つけるだろうか?
それが一定量あるオーバーヘッドを少し追加します。これは、一般I / Oのコストと本当に顕著ではないに比べて小さくなります。
とき非同期/のawait良いよりも害をしますか?
〜50件のリクエスト/秒を超える負荷を見ることはありませんウェブサイト/サービスで。
そして、その後も「害」は非常に小さくなります。
実際の数値は、ハードウェア上などI / Oの作業量に依存します
すべてのコードがメモリ内で実行されているので実際には、そのコードを非同期に呼び出す必要はありません。
その場合、同期、それを処理するために速くなります。
しかし、私はちょうど均一性のために、非同期すべてのアクションを持っていることを好むチームを知っています。オーバーヘッドが非常に小さいため、私はあまりにも、有効なアプローチであると考えます。