From f0fd4eff21e207a9cd6702f5e42560f41838de9c Mon Sep 17 00:00:00 2001 From: Rick Anderson <3605364+Rick-Anderson@users.noreply.github.com> Date: Mon, 6 Jan 2020 14:19:20 -0800 Subject: [PATCH] Update performance-best-practices.md (#16163) * Update performance-best-practices.md * Update performance-best-practices.md --- aspnetcore/performance/performance-best-practices.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aspnetcore/performance/performance-best-practices.md b/aspnetcore/performance/performance-best-practices.md index 7afe912c05..c91dfc7df3 100644 --- a/aspnetcore/performance/performance-best-practices.md +++ b/aspnetcore/performance/performance-best-practices.md @@ -37,7 +37,7 @@ A common performance problem in ASP.NET Core apps is blocking calls that could b **Do**: * Make [hot code paths](#understand-hot-code-paths) asynchronous. -* Call data access and long-running operations APIs asynchronously if an asynchronous API is available. Once again, do not use [Task.Run](/dotnet/api/system.threading.tasks.task.run) to make a synchronus API asynchronous. +* Call data access, I/O, and long-running operations APIs asynchronously if an asynchronous API is available. Do **not** use [Task.Run](/dotnet/api/system.threading.tasks.task.run) to make a synchronus API asynchronous. * Make controller/Razor Page actions asynchronous. The entire call stack is asynchronous in order to benefit from [async/await](/dotnet/csharp/programming-guide/concepts/async/) patterns. A profiler, such as [PerfView](https://github.com/Microsoft/perfview), can be used to find threads frequently added to the [Thread Pool](/windows/desktop/procthread/thread-pools). The `Microsoft-Windows-DotNETRuntime/ThreadPoolWorkerThread/Start` event indicates a thread added to the thread pool. @@ -60,7 +60,7 @@ Memory issues, such as the preceding, can be diagnosed by reviewing garbage coll For more information, see [Garbage Collection and Performance](/dotnet/standard/garbage-collection/performance). -## Optimize Data Access +## Optimize data access and I/O Interactions with a data store and other remote services are often the slowest parts of an ASP.NET Core app. Reading and writing data efficiently is critical for good performance.