Title: Detecting and Fixing Performance Bugs using Execution and Code Patterns Abstract: ========= Software bugs and ineffective testing cost the US economy tens of billions of dollars each year. Performance bugs are programming mistakes that slow down program execution. Performance bugs affect the user-perceived software quality, degrade application responsiveness, and lower system throughput. In addition to impacting everyday software usage, performance bugs have also created high profile incidents, e.g., brought down the Wikipedia and Facebook servers. In this talk I will present my recent work on understanding, detecting, and fixing performance bugs. I will first discuss Caramel, a static analysis technique that detects and fixes performance bugs that have non-intrusive fixes. I will then discuss Toddler, a dynamic analysis technique that detects a different class of performance bugs than Caramel. The idea in Caramel and Toddler is to identify code and execution patterns that are indicative of common programming mistakes affecting performance. I will also briefly present several other of my projects on performance, concurrency, and mobile bugs. Caramel and Toddler found over 190 new performance bugs in widely used Java (Ant, Lucene, Google Core Libraries, Groovy, Tomcat, etc) and C/C++ applications (GCC, Google Chrome, Mozilla, MySQL). 140 of these bugs have already been fixed by developers based on our reports.