2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE) 2019
DOI: 10.1109/icse.2019.00103
|View full text |Cite
|
Sign up to set email alerts
|

Redundant Loads: A Software Inefficiency Indicator

Abstract: 1 while (t < threshold) { 2 t = 0; 3 for(i = 0; i < N; i++) 4 t += A[i] + B[i] * delta; 5 delta -= 0.1 * t; 6 } 1 for (i = 0; i < N; i++) 2 a += A[i]; b += B[i]; 3 while (t < threshold) { 4 t = a + b * delta; 5 delta -= 0.1 * t; 6 } Listing 1: An example code (on the left) with temporal inefficiencies that cannot be identified by existing fine-grained profilers. Because arrays A and B are immutable in the loop nest, computing on these loop invariants introduces many redundancies. One can hoist the redundant co… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
13
0

Year Published

2019
2019
2024
2024

Publication Types

Select...
9

Relationship

4
5

Authors

Journals

citations
Cited by 25 publications
(13 citation statements)
references
References 65 publications
0
13
0
Order By: Relevance
“…However, these instrumentation engines do not directly identify value-related inefficiencies. State-ofthe-art profilers for identifying value-related inefficiencies include RedSpy [51], LoadSpy [47], and Witch [52]; however, these tools work on CPUs only. In this section, we only discuss most related approaches to ValueExpert.…”
Section: Related Workmentioning
confidence: 99%
“…However, these instrumentation engines do not directly identify value-related inefficiencies. State-ofthe-art profilers for identifying value-related inefficiencies include RedSpy [51], LoadSpy [47], and Witch [52]; however, these tools work on CPUs only. In this section, we only discuss most related approaches to ValueExpert.…”
Section: Related Workmentioning
confidence: 99%
“…Binary engines, such as Pin [35], DynamoRIO [5], Dyninst [6], and Valgrind [19], can instrument any instruction of interest for performance characterization and bug detection. The performance characterization tools include redundancy detection [24,39,41,42], data locality measurement [33,43], cache simulation [23]. The bug detection includes aforementioned concurrency bug analysis, taint analysis [21], reverse engineering [31], and execution replay [36].…”
Section: Binary Analysis For Software Bugsmentioning
confidence: 99%
“…While there are many native profiling tools [2,15,54], from which the most related to Python that can identify performance inefficiencies are Toddler [44] that identifies redundant memory loads across loop iterations, and LDoctor [57] that reduces Toddler's overhead by applying dynamic sampling and static analysis. DeadSpy [9], RedSpy [71], and Load-Spy [62] analyze dynamic instructions in the entire program execution to detect useless computations or data movements. Unfortunately, all of them use heavyweight binary instrumentation, which results in high measurement overhead, and they do not work directly on Python programs.…”
Section: Existing Tools Vs Pieprofmentioning
confidence: 99%
“…Python profiles [19,22,24,49,52,55,66,67,75] cannot step in native code so they do not know execution details. Native profiling tools [2,9,15,44,54,62,71,72] can identify hotspots, which sometimes offer leads to problematic code blocks. But because these tools do not have knowledge about Python code's semantic, they cannot render detailed root cause and thus often make debugging remarkably challenging.…”
Section: Introductionmentioning
confidence: 99%