[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/2568225.2568259acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

Detecting performance anti-patterns for applications developed using object-relational mapping

Published: 31 May 2014 Publication History

Abstract

Object-Relational Mapping (ORM) provides developers a conceptual abstraction for mapping the application code to the underlying databases. ORM is widely used in industry due to its convenience; permitting developers to focus on developing the business logic without worrying too much about the database access details. However, developers often write ORM code without considering the impact of such code on database performance, leading to cause transactions with timeouts or hangs in large-scale systems. Unfortunately, there is little support to help developers automatically detect suboptimal database accesses. In this paper, we propose an automated framework to detect ORM performance anti-patterns. Our framework automatically flags performance anti-patterns in the source code. Furthermore, as there could be hundreds or even thousands of instances of anti-patterns, our framework provides sup- port to prioritize performance bug fixes based on a statistically rigorous performance assessment. We have successfully evaluated our framework on two open source and one large-scale industrial systems. Our case studies show that our framework can detect new and known real-world performance bugs and that fixing the detected performance anti- patterns can improve the system response time by up to 98%.

References

[1]
Douglas Barry and Torsten Stanienda. Solving the java object storage problem. Computer, 31(11):33–40, November 1998.
[2]
Neal Leavitt. Whatever happened to object-oriented databases? Computer, 33(8):16–19, August 2000.
[3]
R. Johnson. J2ee development frameworks. Computer, 38(1):107–110, 2005.
[4]
JBoss Community. Hibernate. http://www.hibernate.org/, 2013.
[5]
Apache Software Foundation. Apache openjpa. http://openjpa.apache.org/, 2013.
[6]
L. Richardson and S. Ruby. RESTful Web Services. O’Reilly Media, 2008.
[7]
Weiyi Shang, Zhen Ming Jiang, Hadi Hemmati, Bram Adams, Ahmed E. Hassan, and Patrick Martin. Assisting developers of big data analytics applications when deploying on hadoop clouds. In Proceedings of the 2013 International Conference on Software Engineering, ICSE ’13, pages 402–411, 2013.
[8]
Adrian Nistor, Linhai Song, Darko Marinov, and Shan Lu. Toddler: detecting performance problems via similar memory-access patterns. In Proceedings of the 2013 International Conference on Software Engineering, ICSE ’13, pages 562–571, 2013.
[9]
Adriana E. Chis. Automatic detection of memory anti-patterns. In Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications, OOPSLA Companion ’08, pages 925–926, 2008.
[10]
Trevor Parsons and John Murphy. A framework for automatically detecting and assessing performance antipatterns in component based systems using run-time analysis. In The 9th International Workshop on Component Oriented Programming, WCOP ’04, 2004.
[11]
Guoqing Xu, Nick Mitchell, Matthew Arnold, Atanas Rountev, and Gary Sevitsky. Software bloat analysis: finding, removing, and preventing performance problems in modern large-scale object-oriented applications. In Proceedings of the FSE/SDP workshop on Future of software engineering research, FoSER ’10, pages 421–426, 2010.
[12]
Xusheng Xiao, Shi Han, Dongmei Zhang, and Tao Xie. Context-sensitive delta inference for identifying workload-dependent performance bottlenecks. In Proceedings of the 2013 International Symposium on Software Testing and Analysis, ISSTA 2013, pages 90–100, 2013.
[13]
Spring PetClinic. Petclinic. https: //github.com/SpringSource/spring-petclinic/, 2013.
[14]
Broadleaf Commerce. Broadleaf commerce. http://www.broadleafcommerce.org/, 2013.
[15]
Julie Dubois. Improving the performance of the spring-petclinic sample application. http://blog.ippon.fr/2013/03/14/improving-theperformance-of-the-spring-petclinic-sampleapplication-part-4-of-5/, 2013.
[16]
Patrycja Wegrzynowicz. Performance anti-patterns in hibernate. http://www.devoxx.com/display/DV11/ Performance+Anti-Patterns+in+Hibernate, 2013.
[17]
C.U. Smith and L.G. Williams. Performance Solutions: A Practical Guide to Creating Responsive, Scalable Software. The Addison-Wesley object technology series. ADDISON WESLEY Publishing Company Incorporated, 2001.
[18]
D. Gollmann. Computer Security. Wiley, 2011.
[19]
JBoss Community. Hibernate. http: //docs.jboss.org/hibernate/orm/4.2/manual/en-US/html/ch20.html#performance-fetching, 2014.
[20]
Simon F. Goldsmith, Alex S. Aiken, and Daniel S. Wilkerson. Measuring empirical computational complexity. In Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering, ESEC-FSE ’07, pages 395–404, 2007.
[21]
Dmitrijs Zaparanuks and Matthias Hauswirth. Algorithmic profiling. In Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation, PLDI ’12, pages 67–76, 2012.
[22]
R.V. Binder. Testing Object-oriented Systems: Models, Patterns, and Tools. Addison-Wesley, 2000.
[23]
Milan Jovic, Andrea Adamoli, and Matthias Hauswirth. Catch me if you can: performance bug detection in the wild. In Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications, OOPSLA ’11, pages 155–170, 2011.
[24]
Ryan Bloom. log4jdbc. https://code.google.com/p/log4jdbc/, 2013.
[25]
Tomas Kalibera and Richard Jones. marking in reasonable timerigorous benchmarking in reasonable time. In Proceedings of the 2013 international symposium on International symposium on memory management, ISMM ’13, pages 63–74, 2013.
[26]
Andy Georges, Dries Buytaert, and Lieven Eeckhout. Statistically rigorous java performance evaluation. In Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications, OOPSLA ’07, pages 57–76, 2007.
[27]
Matthew Arnold, Michael Hind, and Barbara G. Ryder. Online feedback-directed optimization of java. In Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, OOPSLA ’02, pages 111–129, 2002.
[28]
D.S. Moore, G.P. MacCabe, and B.A. Craig. Introduction to the Practice of Statistics. W.H. Freeman and Company, 2009.
[29]
Shinichi Nakagawa and Innes C. Cuthill. Effect size, confidence interval and statistical significance: a practical guide for biologists. Biological Reviews, 82:591–605, 2007.
[30]
Vigdis By Kampenes, Tore Dyb˚ a, Jo E. Hannay, and Dag I. K. Sjøberg. Systematic review: A systematic review of effect size in software engineering experiments. Inf. Softw. Technol., 49(11-12):1073–1086, November 2007.
[31]
B.A. Kitchenham, S.L. Pfleeger, L.M. Pickard, P.W. Jones, D.C. Hoaglin, K. El Emam, and J. Rosenberg. Preliminary guidelines for empirical research in software engineering. IEEE Trans. Softw. Eng., 28(8):721–734, 2002.
[32]
J. Hartung, G. Knapp, and B.K. Sinha. Statistical Meta-Analysis with Applications. Wiley, 2011.
[33]
J. Cohen. Statistical Power Analysis for the Behavioral Sciences. L. Erlbaum Associates, 1988.
[34]
Glenn E. Krasner and Stephen T. Pope. A cookbook for using the model-view controller user interface paradigm in smalltalk-80. J. Object Oriented Program., 1(3):26–49, August 1988.
[35]
SpringSource. Spring framework. www.springsource.org/, 2013.
[36]
Guoliang Jin, Linhai Song, Xiaoming Shi, Joel Scherpelz, and Shan Lu. Understanding and detecting real-world performance bugs. In Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation, PLDI ’12, 2012.
[37]
Gregory M. Kapfhammer, Phil McMinn, and Chris J. Wright. Search-based testing of relational schema integrity constraints across multiple database management systems. In Proceedings of the 6th International Conference on Software Testing Verification and Validation, ICST ’13, 2013.
[38]
P. Zaitsev, V. Tkachenko, J.D. Zawodny, A. Lentz, and D.J. Balling. High Performance MySQL: Optimization, Backups, Replication, and More. O’Reilly Media, 2008.
[39]
G. Bulmer. Principles of Statistics. Dover Books on Mathematics Series. Dover Publications, 1979.
[40]
J. Linwood and D. Minter. Beginning Hibernate. Apresspod Series. Apress, 2010.
[41]
C. U. Smith and L.G. Williams. More new software performance antipatterns: Even more ways to shoot yourself in the foot. In Proceedings of the 2003 Computer Measurement Group Conference, CMG 2003, 2003.
[42]
Connie U. Smith and Lloyd G. Williams. Software performance antipatterns. In Proceedings of the 2Nd International Workshop on Software and Performance, WOSP ’00, pages 127–136, 2000.
[43]
Jaideep Nijjar and Tevfik Bultan. Data model property inference and repair. In Proceedings of the 2013 International Symposium on Software Testing and Analysis, ISSTA ’13, pages 202–212, 2013.
[44]
Vittorio Cortellessa, Antinisca Di Marco, and Catia Trubiani. Software performance antipatterns: Modeling and analysis. In Proceedings of the 12th International Conference on Formal Methods for the Design of Computer, Communication, and Software Systems: Formal Methods for Model-driven Engineering, SFM’12, pages 290–335, 2012.
[45]
Juan M. Tamayo, Alex Aiken, Nathan Bronson, and Mooly Sagiv. Understanding the behavior of database operations under program control. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA ’12, pages 983–996, 2012.
[46]
Guoqing Xu, Nick Mitchell, Matthew Arnold, Atanas Rountev, Edith Schonberg, and Gary Sevitsky. Finding low-utility data structures. In Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation, PLDI ’10, pages 174–186, 2010.
[47]
M. Grechanik, B.M.M. Hossain, and U.A. Buy. Testing database-centric applications for causes of database deadlocks. In Proceedings of the 6th International Conference on Software Testing Verification and Validation, ICST ’13, pages 174–183, 2013.
[48]
Mark Grechanik, B. M. Mainul Hossain, Ugo Buy, and Haisheng Wang. Preventing database deadlocks in applications. In Proceedings of the 9th Joint Meeting on Foundations of Software Engineering, ESEC/FSE 2013, pages 356–366, 2013.

Cited By

View all
  • (2024)An Empirical Study on the Characteristics of Database Access Bugs in Java ApplicationsACM Transactions on Software Engineering and Methodology10.1145/367244933:7(1-25)Online publication date: 13-Jun-2024
  • (2024)SMEAGOL: A Static Code Smell Detector for MongoDB2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00088(816-820)Online publication date: 12-Mar-2024
  • (2024)A Multivocal Mapping Study of MongoDB Smells2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00086(792-803)Online publication date: 12-Mar-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ICSE 2014: Proceedings of the 36th International Conference on Software Engineering
May 2014
1139 pages
ISBN:9781450327565
DOI:10.1145/2568225
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

In-Cooperation

  • TCSE: IEEE Computer Society's Tech. Council on Software Engin.

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 31 May 2014

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Dynamic Analysis
  2. Performance
  3. Performance Anti-pattern
  4. Performance Evaluation
  5. Static Analysis

Qualifiers

  • Research-article

Conference

ICSE '14
Sponsor:

Acceptance Rates

Overall Acceptance Rate 276 of 1,856 submissions, 15%

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)76
  • Downloads (Last 6 weeks)12
Reflects downloads up to 02 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2024)An Empirical Study on the Characteristics of Database Access Bugs in Java ApplicationsACM Transactions on Software Engineering and Methodology10.1145/367244933:7(1-25)Online publication date: 13-Jun-2024
  • (2024)SMEAGOL: A Static Code Smell Detector for MongoDB2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00088(816-820)Online publication date: 12-Mar-2024
  • (2024)A Multivocal Mapping Study of MongoDB Smells2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00086(792-803)Online publication date: 12-Mar-2024
  • (2024)Assessing the Performance of AI-Generated Code: A Case Study on GitHub Copilot2024 IEEE 35th International Symposium on Software Reliability Engineering (ISSRE)10.1109/ISSRE62328.2024.00030(216-227)Online publication date: 28-Oct-2024
  • (2024)Automated functional and robustness testing of microservice architecturesJournal of Systems and Software10.1016/j.jss.2023.111857207:COnline publication date: 1-Jan-2024
  • (2024)Data-access performance anti-patterns in data-intensive systemsEmpirical Software Engineering10.1007/s10664-024-10535-829:6Online publication date: 29-Aug-2024
  • (2024)Android Source Code Smells: A Systematic Literature ReviewSoftware: Practice and Experience10.1002/spe.3401Online publication date: 27-Dec-2024
  • (2023)Managing Business Data with An Object-Oriented ApproachNesne Yönelimli Bir Yaklaşımla İş Verilerinin YönetimiBilgi Yönetimi10.33721/by.12700956:2(348-363)Online publication date: 31-Dec-2023
  • (2023)Design of Data Access Architecture Using ORM Framework2023 34th Conference of Open Innovations Association (FRUCT)10.23919/FRUCT60429.2023.10328151(93-99)Online publication date: 15-Nov-2023
  • (2023)Ad Hoc Transactions through the Looking Glass: An Empirical Study of Application-Level Transactions in Web ApplicationsACM Transactions on Database Systems10.1145/363855349:1(1-43)Online publication date: 23-Dec-2023
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media