Alois Reitbauer from Dynatrace presented an excellent session on anti-patterns related to performance. Alois is a very accomplished speaker and the audience knew this as not only was the room full, but there were people sitting on the stairs, floor and anywhere they could get comfortable. I’d spoken to Alois when at TSS-JS conference in Prague so I was looking forward to this.
Alois’ main comments were:
- Developers accept that they will have functional bugs but don’t plan for performance bugs. This is true as performance is the sort of thing that you assume will be handled later when the program is up and running. He made the point that performance needs to be planned for. Scalability, for instance, can only be accomplished if the code actually is scalable in the first place.
- Use proper information. There is no substitute for using a proper profiler and making sure that you’re focusing your attention on the actual problem rather than something which you think is the problem.
- Pay attention to database usage. Using databases is a costly affair (and the number of booths on the exhibitor’s floor claiming to help solve this proved this to be the case) and keeping an eye on what you’re doing with databases certainly helps.
Certainly, these are things that I’ve encountered in Mule projects before. I’ve worked in cases where someone wanted to scale a Mule instance but had items that maintained some element of state and therefore restricted themselves unnecessarily. I’ve also seen people use databases together with rather complex mechanisms to convert rows into the right data-type (and vice versa) which certainly did not help.
How often do you develop with performance in mind?