Treffer: Program Analysis For Software Engineers And Students
Weitere Informationen
Software inefficiencies are inevitable in computer systems. At the code level, software packages have become increasingly complex, they are comprised of a large amount of source code, sophisticated control and data flow, and growing levels of abstraction. This complexity often introduces inefficiencies across software stacks, leading to performance degradation. At the resource level, the evolution of hardware outpaces the performance optimization of software, leading to resource wastage and energy dissipation in emerging architecture. To better understand program behaviors, software developers take advantage of performance profiling tools. Existing profiling techniques, whether fine-grained profilers or coarse-grained profilers focus on identifying hotspots, which is the code region that consumes plenty of resources during program execution. Although hotspot analysis is effective, it hardly diagnoses whether a resource is being used in a productive manner of a program. Thus, developers need to make extra effort to decide if a hotspot needs to be optimized. For this reason, to better perform program optimizations, we need tools that investigate resource wastage rather than resource usage. In this dissertation, we perform program inefficiency detection from different perspectives. First, we study the inefficiency in compiler optimizations. We propose CIDetector, a fine-grained profiler, to detect compiler-introduced and compiler-missed inefficiencies. Through our analysis, we select 12 representative programs from different domains to form a dataset CIBench. We perform the first study on compiler-related inefficiencies in fully optimized binary codes, it offers valuable insights for scientific programmers, compiler writers, and tool developers. Moreover, we study the interaction (between Python code and native libraries) inefficiency for Python applications, and extract two inefficiency patterns that are common in interaction inefficiencies. Based on these patterns, we categorize the interaction inefficiencies by ...