By now, we have an understanding of what performance is. We also know which system bottlenecks lead to performance issues and how they do so. It's safe to assume that we're ready to talk about how to prevent these problems. It's much better to be proactive than reactive when it comes to potential problems, as the situation becomes much worse once the product has been released and is in the hands of actual users.
There are a lot of approaches and tools for detecting performance issues at the development stage. It's essential to detect these issues before releasing a product, and even before testing, because no one knows how your system works under the hood better than you. In this chapter, we'll talk about how to use various profiling tools, monitors, and viewers. We'll also observe how threads work, how much memory...