A pattern is a common solution to a problem that occurs in many different contexts. Patterns capture expert knowledge about “best practices” in software design in a form that allows that knowledge to be reused and applied in the design of many different types of software. Antipatterns are conceptually similar to patterns in that they document recurring solutions to common design problems. They are known as antipatterns because their use (or misuse) produces negative consequences. Antipatterns document common mistakes made during software development as well as their solutions. While both patterns and antipatterns can be found in the literature, they typically do not explicitly consider performance consequences. This paper explores antipatterns from a performance perspective. We discuss performance problems associated with one well-known design antipattern and show how to solve them. We also propose three new performance antipatterns that often occur in software systems.
Connie U. Smith, Lloyd G. Williams