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

Software bloat analysis: finding, removing, and preventing performance problems in modern large-scale object-oriented applications

Published: 07 November 2010 Publication History

Abstract

Generally believed to be a problem belonging to the compiler and architecture communities, performance optimization has rarely gained attention in mainstream software engineering research. However, due to the proliferation of large-scale object-oriented software designed to solve increasingly complex problems, performance issues stand out, preventing applications from meeting their performance requirements. Many such issues result from design principles adopted widely in the software research community, such as the idea of software reuse and design patterns. We argue that, in the modern era when Moore's dividend becomes less obvious, performance optimization is more of a software engineering problem than ever and should receive much more attention in the future. We explain why this is the case, review what has been achieved in software bloat analysis, present challenges, and provide a road map for future work.

References

[1]
E. Altman, M. Arnold, S. Fink, and N. Mitchell. Performance analysis of idle programs. In OOPSLA, 2010.
[2]
K. Asanovic, R. Bodik, J. Demmel, T. Keaveny, K. Keutzer, J. Kubiatowicz, N. Morgan, D. Patterson, K. Sen, J. Wawrzynek, D. Wessel, and K. Yelick. A view of the parallel computing landscape. Commun. ACM, 52(10):56--67, 2009.
[3]
S. M. Blackburn, R. Garner, C. Hoffman, A. M. Khan, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanović, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo benchmarks: Java benchmarking development and analysis. In OOPSLA, pages 169--190, 2006.
[4]
M. D. Bond and K. S. McKinley. Bell: Bit-encoding online memory leak detection. In ASPLOS, pages 61--72, 2006.
[5]
M. D. Bond and K. S. McKinley. Tolerating memory leaks. In OOPSLA, pages 109--126, 2008.
[6]
M. D. Bond and K. S. McKinley. Leak pruning. In ASPLOS, pages 277--288, 2009.
[7]
J. Burnim, S. Juvekar, and K. Sen. WISE: Automated test generation for worst-case complexity. In ICSE, pages 463--473, 2009.
[8]
B. Dufour, B. G. Ryder, and G. Sevitsky. Blended analysis for performance understanding of framework-based applications. In ISSTA, pages 18--128, 2007.
[9]
B. Dufour, B. G. Ryder, and G. Sevitsky. A scalable technique for characterizing the usage of temporaries in framework-intensive Java applications. In FSE, pages 59--70, 2008.
[10]
E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
[11]
B. Gulavani and S. Gulwani. A numerical abstract domain based on "Expression Abstraction" and "Max Operator" with application in timing analysis. In CAV, pages 370--384, 2008.
[12]
S. Gulwani. Speed: Symbolic complexity bound analysis. In CAV, pages 51--62, 2009.
[13]
S. Gulwani. The reachability bound problem. In PLDI, pages 292--304, 2010.
[14]
S. Gulwani, S. Jain, and E. Koskinen. Control-flow refinement and progress invariants for bound analysis. In PLDI, pages 375--385, 2009.
[15]
S. Gulwani, K. Mehra, and T. Chilimbi. SPEED: Precise and efficient static estimation of program computational complexity. In POPL, pages 127--139, 2009.
[16]
M. Hauswirth and T. M. Chilimbi. Low-overhead memory leak detection using adaptive statistical profiling. In ASPLOS, pages 156--164, 2004.
[17]
M. Jump and K. S. McKinley. Cork: Dynamic memory leak detection for garbage-collected languages. In POPL, pages 31--38, 2007.
[18]
J. Larus. Spending Moore's dividend. Commun. ACM, 52(5):62--69, 2009.
[19]
N. Mitchell. The runtime structure of object ownership. In ECOOP, pages 74--98, 2006.
[20]
N. Mitchell. The big pileup. In ISPASS, pages 1--1, 2010.
[21]
N. Mitchell, E. Schonberg, and G. Sevitsky. Four trends leading to Java runtime bloat. IEEE Software, 27(1):56--63, 2010.
[22]
N. Mitchell, E. Schonberg, and G. Sevitsky. Making sense of large heaps. In ECOOP, pages 77--97, 2009.
[23]
N. Mitchell and G. Sevitsky. Leakbot: An automated and lightweight tool for diagnosing memory leaks in large Java applications. In ECOOP, pages 151--172, 2003.
[24]
N. Mitchell and G. Sevitsky. The causes of bloat, the limits of health. OOPSLA, pages 245--260, 2007.
[25]
G. Novark, E. D. Berger, and B. G. Zorn. Efficiently and precisely locating memory leaks and bloat. In PLDI, pages 397--407, 2009.
[26]
O. Shacham, M. Vechev, and E. Yahav. Chameleon: Adaptive selection of collections. In PLDI, pages 408--418, 2009.
[27]
A. Shankar, M. Arnold, and R. Bodik. JOLT: Lightweight dynamic analysis and removal of object churn. In OOPSLA, pages 127--142, 2008.
[28]
C. Smith and L. Williams. Software performance engineering: A case study including performance comparison with design alternatives. IEEE Trans. Soft. Eng., 19:720--741, 1993.
[29]
A. Solar-Lezama. Program Synthesis by Sketching. PhD thesis, UC Berkeley, 2008.
[30]
A. Solar-Lezama, G. Arnold, L. Tancau, R. Bodik, V. Saraswat, and S. Seshia. Sketching stencils. In PLDI, pages 167--178, 2007.
[31]
A. Solar-Lezama, C. G. Jones, and R. Bodik. Sketching concurrent datastructures. In PLDI, pages 136--148, 2008.
[32]
A. Solar-Lezama, R. M. Rabbah, R. Bodík, and K. Ebcioglu. Programming by sketching for bit-streaming programs. In PLDI, pages 281--294, 2005.
[33]
A. Solar-Lezama, L. Tancau, R. Bodik, V. Saraswat, and S. A. Seshia. Combinatorial sketching for finite programs. In ASPLOS, pages 404--415, 2006.
[34]
M. Sridharan and R. Bodik. Refinement-based context-sensitive points-to analysis for Java. In PLDI, pages 387--400, 2006.
[35]
S. Srivastava, S. Gulwani, and J. S. Foster. From program verification to program synthesis. In POPL, pages 313--326, 2010.
[36]
Y. Tang, Q. Gao, and F. Qin. Leaksurvivor: Towards safely tolerating memory leaks for garbage-collected languages. pages 307--320, 2008.
[37]
M. Woodside, G. Franks, and D. C. Petriu. The future of software performance engineering. In FOSE, pages 171--187, 2007.
[38]
G. Xu, M. Arnold, N. Mitchell, A. Rountev, and G. Sevitsky. Go with the flow: Profiling copies to find runtime bloat. In PLDI, pages 419--430, 2009.
[39]
G. Xu, N. Mitchell, M. Arnold, A. Rountev, E. Schonberg, and G. Sevitsky. Finding low-utility data structures. In PLDI, pages 174--186, 2010.
[40]
G. Xu and A. Rountev. Precise memory leak detection for Java software using container profiling. In ICSE, pages 151--160, 2008.
[41]
G. Xu and A. Rountev. Detecting inefficiently-used containers to avoid bloat. In PLDI, pages 160--173, 2010.
[42]
G. Xu, A. Rountev, and M. Sridharan. Scaling CFL-reachability-based points-to analysis using context-sensitive must-not-alias analysis. In ECOOP, 2009.

Cited By

View all
  • (2024)Building Up Green Software Life Cycle Model2024 10th International Conference on ICT for Sustainability (ICT4S)10.1109/ICT4S64576.2024.00012(20-28)Online publication date: 24-Jun-2024
  • (2024)SoK: A Tale of Reduction, Security, and Correctness - Evaluating Program Debloating Paradigms and Their CompositionsComputer Security – ESORICS 202310.1007/978-3-031-51482-1_12(229-249)Online publication date: 11-Jan-2024
  • (2023)DJXPerf: Identifying Memory Inefficiencies via Object-Centric Profiling for JavaProceedings of the 21st ACM/IEEE International Symposium on Code Generation and Optimization10.1145/3579990.3580010(81-94)Online publication date: 17-Feb-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
FoSER '10: Proceedings of the FSE/SDP workshop on Future of software engineering research
November 2010
460 pages
ISBN:9781450304276
DOI:10.1145/1882362
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

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 07 November 2010

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. performance analysis
  2. performance optimization
  3. runtime bloat

Qualifiers

  • Research-article

Conference

SIGSOFT/FSE'10
Sponsor:

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)62
  • Downloads (Last 6 weeks)3
Reflects downloads up to 04 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Building Up Green Software Life Cycle Model2024 10th International Conference on ICT for Sustainability (ICT4S)10.1109/ICT4S64576.2024.00012(20-28)Online publication date: 24-Jun-2024
  • (2024)SoK: A Tale of Reduction, Security, and Correctness - Evaluating Program Debloating Paradigms and Their CompositionsComputer Security – ESORICS 202310.1007/978-3-031-51482-1_12(229-249)Online publication date: 11-Jan-2024
  • (2023)DJXPerf: Identifying Memory Inefficiencies via Object-Centric Profiling for JavaProceedings of the 21st ACM/IEEE International Symposium on Code Generation and Optimization10.1145/3579990.3580010(81-94)Online publication date: 17-Feb-2023
  • (2023)Decker: Attack Surface Reduction via On-Demand Code MappingProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 210.1145/3575693.3575734(192-206)Online publication date: 27-Jan-2023
  • (2023)Coverage-Based Debloating for Java BytecodeACM Transactions on Software Engineering and Methodology10.1145/354694832:2(1-34)Online publication date: 4-Apr-2023
  • (2023)Evaluating Container Debloaters2023 IEEE Secure Development Conference (SecDev)10.1109/SecDev56634.2023.00023(88-98)Online publication date: 18-Oct-2023
  • (2023)Module-Based Approach for Detecting Performance Bugs in Java Applications at ScaleIECON 2023- 49th Annual Conference of the IEEE Industrial Electronics Society10.1109/IECON51785.2023.10312571(1-7)Online publication date: 16-Oct-2023
  • (2022)Studying and Understanding the Tradeoffs Between Generality and Reduction in Software DebloatingProceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering10.1145/3551349.3556970(1-13)Online publication date: 10-Oct-2022
  • (2022)XDebloat: Towards Automated Feature-Oriented App DebloatingIEEE Transactions on Software Engineering10.1109/TSE.2021.312021348:11(4501-4520)Online publication date: 1-Nov-2022
  • (2022)Trimmer: An Automated System for Configuration-Based Software DebloatingIEEE Transactions on Software Engineering10.1109/TSE.2021.309571648:9(3485-3505)Online publication date: 1-Sep-2022
  • 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

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media