| Davidson J.W., Holler A.M., Subprogram Inlining: A Study of its effects on Program Execution Time, IEEE Tr. on Software Engineering, Vol 18(2), February 1992, pp. 89--102. |
....of the Pareto optimal trade offs between memory power and performance. Our methodology is demonstrated on an MPEG 4 video decoder. 1. Introduction Traditionally, function inlining has been used to reduce computational complexity of programs by removing the overhead related to function calls [8, 21]. Also less overhead in stack saving when going from the calling to the called function is achieved. The elimination of the function call overhead in the critical path can eventually speed up the application. The programming community has been aware of this advantages for a long time and ....
J. W. Davidson and A. M. Holler. Subprogram Inlining: A Study of its Effects on Program Execution Time. IEEE Transaction on Software Engineering, 18(2), 1992.
....limited expansion of code space. The gain in execution speed may be due to direct effects, such as the reduction in the number of call and return instructions executed or due to indirect effects, such as cache and virtual memory behaviour and in context optimizations permitted on the inlined code [DH92, CHT91, McF91]. For efficiency and ease of implementation, many compilers restrict the conditions under which a procedure may be inlined. In some compilers (e.g. CMCH92] the calls that may be inlined depend on the order in which the procedures are declared. Several diverse heuristics are used to restrict ....
....of function calls performed at runtime. In our experimental comparison, then, it is most appropriate to measure the percentage reduction in function calls predicted, with a fixed code size expansion. The relationship between execution times and the number of calls performed has been examined in [DH92], and the accuracy of the predictions has been examined in [Sch77, Kas93] In [Kas93] we also examine the greedy strategy with cv , ov , and hybrid inlining, using exact call information instead of relying on predictions made using the probabilistic model. 5.1 Our Inliner To gather data, an ....
Jack W. Davidson and Anne M. Holler. Subprogram inlining: A study of its effects on program execution time. IEEE Transactions on Software Engineering, 18:89--101, 1992.
....may cause the time and memory requirements of aggressive transformations to become intractable as both these resource usages are related in a nonlinear fashion to the problem size. If this is the case, the benefit which was exposed by inlining can t be taken advantage of as intended [22] 23] [24]. In a region based compiler, much of the adverse effect of inlining is alleviated by the compiler s ability to control the region size. 2.2.1 Region based optimization In a conventional compilation environment, each program function is completely processed before the compiler proceeds to the ....
J. W. Davidson and A. M. Holler, "Subprogram inlining: A study of its effects on program execution time," IEEE Transactions on Software Engineering, vol. 18, pp. 89--101, February 1992.
....Techniques such as code reordering and or intelligent cache management are good candidates for improving performance. Dead code and data detection and elimination can help reduce the code size [29, 30] Reducing procedure size is important because small procedures can benefit more from inlining [32] and cloning [33] Notice, however, that the increased use of indirect branches (which will be explained below) makes call graph construction and inlining decisions more difficult [34] The lower static count of conditional branches, along with the increased frequency of indirect branches, suggest ....
J. Davidson and A.M. Holler. Subprogram Inlining: A Study of its Effects on Program Execution Time. IEEE Transactions on Software Engineering, 18(2):89--101, February 1992.
....[11] who sketch possible approaches to the problem at a very high level but offer few details. Many of the issues that arise in this work have been considered in the compiler optimization literature as well, albeit in considerably more restricted contexts. This includes work on function inlining [7, 12, 14, 15, 23], loop unrolling [9, 13, 16, 31] and improving cache utilization of programs [22, 25, 28] 2 Underlying Concepts We assume that the programs being specialized are expressed in a (untyped, eager) first order functional language. We will generally work with binding time annotated programs with ....
J. W. Davidson and A. M. Holler, "Subprogram Inlining: A Study of its Effects on Program Execution Time", IEEE Transactions on Software Engineering vol. 18 no. 2, Feb. 1992, pp. 89--102.
....the layer interface from the protocol machine implementation. The merits of function inlining have been extensively debated. In general, selective function inlining can result in an increase in performance in cases where inlining and register allocation do not adversely affect one another [Davidson 1992] 7 . In the case of VSAP functions, no local function variables exist (other than parameters) thus interaction with a compiler s register allocation algorithm is minimized. The modest increase in code size seems insignificant in comparison with the gain in type abstraction, protection, and ....
Jack W. Davidson and Anne M. Holler. "Subprogram inlining: a study of its effects on program execution time," IEEE Transactions on Software Engineering, 18(2), February 1992, pp. 89--102.
....been developed to modularize the interprocedural data flow analysis problem [52, 64] Results of research in a demand driven approach to interprocedural data flow analysis [26, 27, 45] have shown that overhead can be reduced compared to more exhaustive methods. 2.3. 2 Inlining Procedure inlining [2, 4, 5, 12, 16, 21, 22, 23, 46, 49, 56] is a widely researched and accepted means to enable whole program optimization. In procedure inlining, procedure calls are physically replaced with the complete body of the procedure being called. This reduces hidden memory aliasing behavior, and exposes more sequential code to the compiler for ....
J. W. Davidson and A. M. Holler. Subprogram inlining: A study of its effects on program execution time. IEEE Transactions on Software Engineering, 18:89--101, 1992.
....the call and allows us to specialize the body for a particular call site (calling context) However, inlining is a two edged sword. Many people have found unexpected performance degradation when experimenting with inlining. ffl Inlining at the source level might increase the register pressure [26] and lead to suboptimal register allocations. ffl In FORTRAN programs, the compiler might no be able to exploit the no alias requirement for arguments of subroutine calls, once such a subroutine has been inlined [20] ffl Inlining of recursive subroutines may lead to stack explosion [14] ffl ....
J. W. Davidson and A. M. Holler. Subprogram inlining: A study of its effects on program execution time. IEEE Trans. on Softw. Eng., 18(2):89, February 1992.
....overheads, inlining also allows the body of an inlined procedure to be analyzed and optimized specific to its called context [200] One disadvantage of inlining is that it increases the size of the executable although a study in [83] concludes that this size increase is not a problem in practice. [84] is another reference that discusses various factors that influence the speedup of inlined code. Inlining is a useful optimization technique in an object oriented language because there often exist short but often called routines in classes. We therefore added a phase in the compiler to perform ....
Jack W. Davidson and Anne M. Holler. Subprogram Inlining: A Study of its Effects on Program Execution Time. IEEE Transactions on Software Engineering, 18(2):89--102, February 1992.
....They showed that the primary gain from procedure merging is primarily from removal of calls and returns. The savings from merging is largely orthogonal to optimization savings. Using this fact, they propose optimizing before merging to reduce the execution time of optimization. Davidson and Holler [DH88, DH89] implemented a source to source procedure inliner for the language C. Deeply nested calls are inlined first. Inlining stops when there are no more registers available to hold the variables assigned to registers by the programmer. If user assignments are ignored, inlining can slow the program down ....
J. W. Davidson and A. M. Holler. Subprogram inlining: A study of its effects on program execution time. Technical Report TR-89-04, University of Virginia, November 1989.
....LWproc technique identifies common blocks of instructions and collects them into a single lightweight procedure. Past work has demonstrated that procedure inlining can degrade the performance of a program by causing code size blowup, i.e. by greatly increasing the working set size of the program [DH92, DC93] The use of lightweight procedures combines the reduction of a program s working set size with low procedure call overhead (a call to an LWproc is much cheaper than a regular procedure call) Finally, the use of LWprocs is orthogonal to other locality based I cache optimizations, and it ....
J. W. Davidson and A. M. Holler. Subprogram inlining: A study of its effects on program execution time. IEEE Trans. on Softw. Eng., 18(2):89, February 1992.
....we were surprised by the rather small performance increases as the threshold is increased beyond 2, and plan to investigate this further. 8 Related work There is a modest literature on inlining applied to imperative programming languages, such as C and FORTRAN some recent examples are [DH92, CMCH92, CHT91, CHT92]. In these works the focus is exclusively on procedures defined at the top level. The benefits are found to be fairly modest (in the 10 20 range) but the cost in terms of code bloat is also very modest. Considerable attention is paid to the effect on register allocation of larger basic blocks, ....
JW Davidson and AM Holler. Subprogram inlining: a study of its effects on program execution time. IEEE Transactions on Software Engineering, 18:89--102, February 1992.
....to produce efficient code. There are several advantages to this approach: 1. When PREDATOR composes multiple NPTs, it performs compiler optimizations such as common subexpression elimination and partial evaluation. 2. PREDATOR expands inline code, thus removing runtime functional call overhead [12]. 3. PREDATOR optimizes queries to determine the most efficient way to traverse a container [14, 3] In the following sections, we report the results of three experiments using PREDATOR. We specifically examine the performance of generated code, the potential gains in software productivity, and ....
J. Davidson. Subprogram Inlining: A Study of its Effects on Program Execution Time. IEEE Trans. on Soft. Engr., February 1992.
....to produce efficient code. There are several advantages to this approach: 1. When PREDATOR composes multiple NPTs, it performs compiler optimizations such as common subexpression elimination and partial evaluation. 2. PREDATOR expands inline code, thus removing runtime functional call overhead [Dav92]. 3. PREDATOR optimizes queries to determine the most efficient way to traverse a container [Kor91] In the following sections, we report the results of three experiments using PREDATOR. We specifically examine the performance of generated code, the potential gains in software productivity, and ....
J. Davidson, Subprogram Inlining: A Study of its Effects on Program Execution Time, IEEE Trans. on Soft. Engr., February 1992.
....several challenges and opportunities for compiler writers and architects. First, procedure inlining may be more promising, but more difficult to accomplish, due to the larger number of indirect function calls and the difficultly of interprocedural data flow analysis in C [35] Other studies [42, 43, 44] have shown that procedure inlining is problematic; it does not always improve program performance. However, one attribute of procedure inlining is that it removes procedure calling overhead; this overhead is obviously a larger percentage of small procedures. Thus, automated procedure inlining ....
Jack W. Davidson and Anne M. Holler. Subprogram inlining: A study of its effects on program execution time. IEEE Transactions on Software Engineering, 18(2):89--102, February 1992.
....operator methods employ synchronization control to ensure consistent access to the value held by the future. Method inlining results in faster code only if the compiler also performs efficient machine register allocation when replacing a procedure call with inlined code. Davidson and Holler [6] offer convincing empirical evidence that inlining improves performance more often than not, particularly for small procedures like those defined by the Future T template class. By declaring all Future T methods inline, an optimizing compiler can often reduce the run time overhead associated ....
Jack W. Davidson and Anne M. Holler. Subprogram inlining: A study of its effects on program execution time. IEEE Transactions on Software Engineering, SE-18(2):89--102, February 1992.
.... of abstraction that is purely syntactic (i.e. has no run time cost) Whereas inlining in general does not always result in better performance, empirical evidence suggests that careful selection of methods to be inlined as well as the optimizing compiler can have a positive effect on performance [4]. The tradeoff of static binding is that once modules are bound in this fashion, they cannot be dynamically reconfigured. A carefully engineered balance between the use of static and dynamic binding of modules can allow for efficient implementation while maintaining a modular, configurable ....
Jack W. Davidson and Anne M. Holler. Subprogram Inlining: A Study of its Effects on Program Execution Time. IEEE Transactions on Software Engineering, SE-18(2):89--102, February 1992.
....poses several challenges and opportunities for compilers and architects. First, procedure inlining will be more promising, but more difficult to accomplish, due to the larger number of indirect function calls and the difficultly of interprocedural data flow analysis in C [38] Other studies [11] have shown that procedure inlining is problematic; it does not always improve program performance. However, one attribute of procedure inlining is that it removes procedure calling overhead; this overhead is obviously a larger percentage of small procedures. Thus, automated procedure inlining ....
Jack W. Davidson and Anne M. Holler. Subprogram inlining: A study of its effects on program execution time. IEEE Transactions on Software Engineering, 18(2):89--102, February 1992.
....the expansions) Inlining may impair code production because of los of high level informations. For instance, Cooper et al. report in [5] that inlining discards aliasing informations in Fortran programs, so that compilers are unable to avoid interlock during executions. Davison and Holler show in [6] that inlining for C may increase register save and restore operations because of C compilers artifacts. On our part, we have never noticed decreases of performance when activating inlining optimization. This paper is organized as follows: section 2 presents a study of previous algorithms and ....
J. Davidson and A. Holler. Subprogram Inlining: A Study of its Effects on Program Execution Time. IEEE Transactions on Software Engineering, 18(2):89--101, February 1992.
....can avoid many misprediction penalties. Existing branch prediction hardware may be able to improve on strictly profile based prediction because it can accommodate bursts of calls to a secondary call target. Although inlining functions is useful, it does not always reduce program execution time [10]. However, many indirect function calls in C tend to be very short, because programmers are more likely to employ proper data encapsulation techniques. We believe automatic inlining will be more useful for C than C. Further, on most architectures, the converted indirect function call is more ....
Jack W. Davidson and Anne M. Holler. Subprogram inlining: A study of its effects on program execution time. IEEE Transactions on Software Engineering, 18(2):89--102, February 1992.
....But inlining must be done carefully, since excessive inlining can easily lead to a large increase in code size as one is in fact duplicating code. In imperative languages compilers inlining has been reported to improve programs execution time by 18 [RG89] 12 [DH88] and 10 [Cho83] DH92] presents a comprehensive analysis on the effect of inlining in imperative languages. In the functional framework, function definitions can also be inlined at their call sites. There is the same risk of code explosion due to excessive code duplication, but, done in a controlled way, similar ....
Jack W. Davidson and Anne M. Holler. Subprogram inlining: A study of its effects on program execution time. IEEE Transactions on Software Engineering, 18(2):89--102, February 1992.
....factor is increased. The figure indicates that as the size of the unrolled loop exceeds 16384 instructions, the performance degrades. This degradation in performance will be even more pronounced if unrolling is applied in conjunction with other code replicating optimizations like function inlining [Davi88, Davi93]. To make sure that the unrolled loop does not overflow the instruction cache, it is necessary for the compiler to determine the size of the unrolled loop code in terms of machine language instructions. To correctly determine the size of the unrolled loop code, the compiler needs to know the size ....
....in the final code. 3.6.3 Function inlining Inline function expansion replaces frequently invoked function calls with the function body itself. Function inlining increases the spatial locality and decreases the number of function calls. This subject has been investigated by previous researchers [Davi88, Hwu89, McFa91, Davi93, Chen93]. Inlining increases the size of a basic block, which facilitates better application of traditional optimizations like dead code elimination, constant propagation [Beni94, Davi88] and instruction scheduling. But function inlining, like loop unrolling, increases the size of the code which may have ....
Davidson, J. W., and Holler, A. M., "Subprogram Inlining: A Study of its effect on program execution time", IEEE Transactions on Software Engineering, 18(2), pp. 89-101.
....factor is increased. The Figure indicates that as the size of the unrolled loop exceeds 16384 instructions, the performance degrades. This degradation in performance will be even more pronounced if unrolling is applied in conjunction with other code replicating optimizations like function inlining [Davi88, Davi93]. To make sure that the unrolled loop does not overflow the instruction cache, it is necessary for the compiler to determine the size of the unrolled loop code in terms of machine language instructions. To correctly determine the size of the unrolled loop code, the compiler needs to know the size ....
....in the final code. 7.3 Function inlining Inline function expansion replaces frequently invoked function calls with the function body itself. Function inlining increases the spatial locality and decreases the number of function calls. This subject has been investigated by previous researchers [Davi88, Hwu89, McFa91, Davi93, Chen93]. Inlining increases the size of a basic block, which facilitates better application of traditional optimizations like dead code elimination, constant propagation [Beni94, Davi88] and instruction scheduling. But function inlining, like loop unrolling, increases the size of the code which may have ....
Davidson, J. W., and Holler, A. M., "Subprogram Inlining: A Study of its effect on program execution time", IEEE Transactions on Software Engineering, 18(2), Feb. 1992, pp. 89101.
No context found.
Davidson J.W., Holler A.M., Subprogram Inlining: A Study of its effects on Program Execution Time, IEEE Tr. on Software Engineering, Vol 18(2), February 1992, pp. 89--102.
No context found.
J. W. Davidson and A. M. Holler, "Subprogram Inlining: A Study of its Effects on Program Execution Time", IEEE Transactions on Software Engineering vol. 18 no. 2, Feb. 1992, pp. 89--102.
First 50 documents
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC