240 likes | 356 Vues
This study investigates the object-oriented characteristics of C++ programs within the SPEC CPU 2006 benchmarks, analyzing the impact of object-oriented programming (OOP) on performance metrics such as control flow, branch composition, and misprediction rates. The research utilizes quantifiable metrics, including Chidamber and Kemerer (CK) metrics, to assess code modularity, complexity, and maintenance implications. Results indicate that the object-oriented nature of C++ programs does not negatively impact performance when compared to SPEC Java benchmarks, highlighting the intricate relationship between OOP and execution efficiency.
E N D
On the Object Orientedness of C++ programs in SPEC CPU 2006 Ciji Isen & Lizy K. John University of Texas - Austin Laboratory for Computer Architecture 1/27/2008
Introduction • Object Oriented programming encourages • Code modularity, ease of design & maintenance • Inheritance & hierarchies • polymorphism • Dynamic Dispatch • Should imply • Multiple function invocation • More functions • More indirect branching • Increased control flow • particularly function calls and indirect branches Laboratory for Computer Architecture
Objective • Object oriented nature of SPEC CPU2006 C++ programs • Measure using quantifiable metrics • Compare with other OO(SPEC java) benchmarks • Has OO nature affected control flow? • branch compositions • Branch misprediction Laboratory for Computer Architecture
C++ programs in SPEC cpu06 Laboratory for Computer Architecture
Methodology • Performance counters • Woodcrest(Intel), Power5+(IBM) • Benchmarks • SPEC CPU 2006 • SPEC jbb2000 • SPECjvm98 • Principle Component Analysis for Visualization Laboratory for Computer Architecture
Object Oriented metrics • CK (Chidamber and Kemerrer) metrics • WMC (Weighted Methods per Class) • DIT (Depth of Inheritance Tree) • NOC (Number of Children) • CBO (Coupling Between Objects) • RFC (Response for a Class) Laboratory for Computer Architecture
WMC (Weighted Methods per Class) • if complexity is unity • WMC = n • Intuition: More methods implies • more time & effort to develop and maintain class • More methods inherited by children => more impact on children • Likely to be more application specific => less reuse Laboratory for Computer Architecture
DIT (Depth of Inheritance Tree) • A measure of impact of ancestor classes • Intuition: deeper class hierarchy implies • More methods inherited => more complexity • Greater design complexity • Greater potential to reuse inherited methods Laboratory for Computer Architecture
NOC (Number of Children) • Definition: Number of immediate subclasses • Intuition: more children implies • Greater reuse • more influence on the design Laboratory for Computer Architecture
CBO (Coupling Between Objects) • Definition: The number of other classes to which a class is coupled • Via methods • Instance variables • Intuition: more coupling implies • Bad for modularity. Less independence for class => difficult to reuse • Less independence => sensitive to change in other parts • More interaction => complexity in testing correctness Laboratory for Computer Architecture
RFC (Response for a Class) • Intuition: more methods executed per message implies • More complexity for the class • Complexity in testing and debugging Laboratory for Computer Architecture
Object Orientedness of C++ benchmarks in cpu06 Laboratory for Computer Architecture
Object Orientedness of C++ benchmarks in cpu06 Laboratory for Computer Architecture
Object Orientedness of C++ vs. java benchmarks [DaCapo paper] Laboratory for Computer Architecture
Object Orientedness of C++ vs. java benchmarks Laboratory for Computer Architecture
Control flow Characteristics • Has OO nature affected control flow? • branch compositions • Branch misprediction Laboratory for Computer Architecture
Branch types - INT Laboratory for Computer Architecture
Branch types - FP Laboratory for Computer Architecture
Branch types - INT Laboratory for Computer Architecture
Branch types - FP Laboratory for Computer Architecture
Branch misprediction - INT Laboratory for Computer Architecture
Branch misprediction - FP Laboratory for Computer Architecture
Summary • Increased presence of C++ in SPEC CPU encouraging • Measured object orientedness of C++ programs • Xalanckbmk,dealII & omnetpp – strong OO • OO nature of C++ programs not any worse than SPEC Java benchmarks • Analyzed impact of OO nature on control flow • Control flow increase pronounced for FP • Xalanckbmk, dealII & omnetpp – higher % of function calls and indirect branches Laboratory for Computer Architecture
Questions 24 Laboratory for Computer Architecture Laboratory for Computer Architecture 8/28/2007