An Industrial Experience Report on Performance-Aware Refactoring on a Database-centric Web Application
Modern web applications rely heavily on databases to query and update information. To ease the development efforts, Object Relational Mapping (ORM) frameworks provide an abstraction for developers to manage databases by writing in the same Object-Oriented programming languages. Prior studies have shown that there are various types of performance issues caused by inefficient accesses to databases via different ORM frameworks (e.g., Hibernate and ActiveRecord). However, it is not clear whether the reported performance anti-patterns (common performance issues) can be generalizable across various frameworks. In particular, there is no study focusing on detecting performance issues for applications written in PHP, which is the choice of programming languages for the majority (79%) of web applications. In this experience paper, we detail our process on conducting performance-aware refactoring of an industrial web application written in Laravel, the most popular web framework in PHP. We have derived a complete catalog of 17 performance anti-patterns based on prior research and our experimentation. We have found that some of the reported anti-patterns and refactoring techniques are framework or programming language specific, whereas others are general. The performance impact of the anti-pattern instances are highly dependent on the actual usage context (workload and database settings). When communicating the performance differences before and after refactoring, the results of the complex statistical analysis may be sometimes confusing. Instead, developers usually prefer more intuitive measures like percentage improvement. Experiments show that our refactoring techniques can achieve up to 1319% and 1417% times speedup for the industrial and the open source application under various scenarios.
Wed 13 NovDisplayed time zone: Tijuana, Baja California change
16:00 - 17:50 | PerformanceResearch Papers / Demonstrations at Hillcrest Chair(s): Tim Menzies North Carolina State University | ||
16:00 20mTalk | Accurate Modeling of Performance Histories for Evolving Software Systems Research Papers Stefan Mühlbauer Bauhaus-University Weimar, Sven Apel Saarland University, Norbert Siegmund Bauhaus-University Weimar Pre-print | ||
16:20 20mTalk | An Industrial Experience Report on Performance-Aware Refactoring on a Database-centric Web Application Research Papers Boyuan Chen York University, Zhen Ming (Jack) Jiang York University, Paul Matos Copywell Inc., Michael Lacaria Copywell Inc. Authorizer link Pre-print | ||
16:40 20mTalk | An Experience Report of Generating Load Tests Using Log-recovered Workloads at Varying Granularities of User Behaviour Research Papers Jinfu Chen Jiangsu University, Weiyi Shang Concordia University, Canada, Ahmed E. Hassan Queen's University, Yong Wang Alibaba Group, Jiangbin Lin Alibaba Group Pre-print | ||
17:00 10mTalk | How Do API Selections Affect the Runtime Performance of Data Analytics Tasks? Research Papers Yida Tao Shenzhen University, Shan Tang Shenzhen University, Yepang Liu Southern University of Science and Technology, Zhiwu Xu Shenzhen University, Shengchao Qin University of Teesside | ||
17:10 10mTalk | Demystifying Application Performance Management Libraries for Android Research Papers Yutian Tang The Hong Kong Polytechnic University, Xian Zhan The Hong Kong Polytechnic University, Hao Zhou The Hong Kong Polytechnic University, Xiapu Luo The Hong Kong Polytechnic University, Zhou Xu Wuhan University, Yajin Zhou Zhejiang University, Qiben Yan Michigan State University | ||
17:20 10mDemonstration | PeASS: A Tool for Identifying Performance Changes at Code Level Demonstrations David Georg Reichelt Universität Leipzig, Stefan Kühne Universität Leipzig, Wilhelm Hasselbring Kiel University Pre-print Media Attached File Attached | ||
17:30 20mTalk | ReduKtor: How We Stopped Worrying About Bugs in Kotlin Compiler Research Papers Daniil Stepanov Saint Petersburg Polytechnic University, Marat Akhin Saint Petersburg Polytechnic University / JetBrains Research, Mikhail Belyaev Saint Petersburg Polytechnic University Pre-print |