Learn More
—In contrast to traditional computing systems, such as desktops and servers, that are programmed to perform " compute-bound " and " run-to-completion " tasks, mobile applications are designed for user interactivity. Factoring user interactiv-ity into computer system design and evaluation is important, yet possesses many challenges. In particular,(More)
In profiling, a tradeoff exists between information and overhead. For example, hardware-sampling profilers incur negligible overhead, but the information they collect is consequently very coarse. Other profilers use instrumentation tools to gather temporal traces such as path profiles and hot memory streams, but they have high overhead. Runtime and(More)
The transition to multithreaded, multi-core designs places a greater responsibility on programmers and software for improving performance; thread-level parallelism (TLP) will be increasingly relied upon in addition to instruction-level parallelism (ILP) and increased clock frequency. Deciding where to try to parallelize code is difficult, especially for(More)
Dynamic data race detectors are an important mechanism for creating robust parallel programs. Software race detectors instrument the program under test, observe each memory access, and watch for inter-thread data sharing that could lead to concurrency errors. While this method of bug hunting can find races that are normally difficult to observe, it also(More)
Compilers employ many aggressive code transformations to achieve highly optimized code. However, because of complex target architectures and unpredictable optimization interactions, these transformations may not always be beneficial. Current analysis methods measure performance at the application level and ignore optimization effects at the function and(More)
— Smartphones emerged as the new necessary gadget to many. A smartphone can combine some or all functionalities of several other devices such as a personal computer, phone, personal game console, music player, radio, and/or GPS. Unlike most of the above listed technologies which are switched ON on a need-to basis, a smartphone is always ON. Since a(More)
Dynamic instrumentation systems, used for program analysis, bug isolation, software security and simulations, are becoming increasingly popular. There exists a need to debug dynamically instrumented programs while keeping the presence of dynamic instrumentation system hidden from debug users. Existing debuggers use debug information in program binaries that(More)