The performance of a web application is very critical for the success of the project, in any company and with any client. We should have a good thought process about possible bottlenecks and their solutions.
Recently, Sriman, one of the blog readers, asked me this question to me. Well, I assumed that answer to this question might help a larger group of you guys, so I am posting the answer here.
1. Steps to Identify Performance Improvement Areas
Many of us agree that performance is itself a relative term. An awesome performing application can be a total disappointment for another person or your customer. So, like any other relative measurements, you have to follow the basics here as well.
It is crucial to follow all the steps to get improvement results that can be measured and demonstrated.
1.1. Define (awesome) performance benchmarks
The very first thing you need to do is to decide what is good performance for you. It should be a measurable goal regarding time units or resource utilization.
1.2. Identify problem areas
Once you define the benchmark figures, use performance monitoring tools (such as VisualVM or JMeter) to identify areas where the application lags behind benchmark numbers. Deep dive to the statement level in your code. Identify which pieces of code is causing the degraded performance. List each of them and keep track of each piece in the whole process.
Note: Please remember that over-optimization often results in more harm. So choose wisely.
1.3. Solve each problem and measure the difference
Brainstorm each problem with your team member, and find the best way to solve that problem. One at a time. Compare each solution to each problem, and record their result.
1.4. Measure overall performance improvement
At last, measure overall application performance improvement and compare with benchmarks. If the application is still lagging, then repeat all steps.
2. Food for Thoughts
While, the above steps are complete in sense of what needs to be done exactly – to improve performance in a measurable way, you need to keep a few things in mind:
- Think out of the box. e.g. If Database querying takes time, then instead of over-optimizing the SQL statement, think of using caching.
- Never assume/guess anything. Always make proposed changes, and record its performance.
- Take help of automation. Use tools to capture performance after every change. It will make life much easy.
- Avoid over-optimization. Prefer simplicity and maintainability of code.
- Consider using advanced and more capable hardware/network solutions as well. They make a big impact sometimes.
And always remember, performance is a relative experience. Ask your customers for feedback. If they are happy, then never attempt to fix anything in your application.
I hope that the above thought process will help you in overcoming that complex situation when you are optimizing an application’s performance.
Happy Learning !!