66 citations found. Retrieving documents...
Brad Calder, Dirk Grunwald, and Benjamin Zorn. Quantifying behavioral differences between C and C++ programs. Journal of Programming Languages, 2(4):313--351, 1994.

 Home/Search   Document Details and Download   Summary   Related Articles   Check  

This paper is cited in the following contexts:

First 50 documents  Next 50

Compact Dispatch Tables for Dynamically Typed Programming Languages - Vitek (1996)   (10 citations)  (Correct)

....programming language. The excellent book edited Krasner contains a wealth of information [38] on this topic. Additional data from the SOAR (SMALLTALK On A Risc) project was published in Ungar s thesis [54] More recent work from the Cecil team [31] 21] Hlzle and Ungar [34] and on C programs [9] indicates that the problem is starting to get more serious consideration. First and foremost, we need to find out about the dynamic frequency of message sends. By dynamic, we mean that it occurs at run time , in contrast with the static frequency that can be obtained by inspecting program ....

Calder, B., Grunwald, D., Zorn, B.: Quantifying Behavioral Differences Between C and C++ Programs. FIND SOURCE, January 1994.


Performance and power evaluation of C++ object-oriented.. - Chatzigeorgiou (2003)   (Correct)

....are reluctant to employ these techniques due to the additional performance overhead, in an environment with relatively limited computational power and memory resources. The introduced penalty on the system performance, in terms of execution time and memory overhead, has been demonstrated in Refs. [4,8,11,18]. This inherent drawback of object oriented languages has forced the software community to develop sophisticated compilers which attempt to optimize the performance of OOP [1,7,13, 20,29] An open standard defining a subset of C suitable for embedded applications has also been initiated [9] The ....

....requiring its own attributes (e.g. indices) The number of memory accesses refers only to the benchmark kernel and consequently it reflects the increased data transfers when abstract data types are used, probably due to inefficient use of registers. This is consistent with the observation in Ref. [4] that one of the most striking differences between C and C,isthatC programs issue more loads and stores than C programs. From a power consumption point of view, this effect increases energy dissipation even further since according to the physical measurements [23] base and overhead costs for Load ....

B. Calder, D. Grunwald, B. Zorn, Quantifying behavioral differences between C and C programs, Journal of Programming Languages 2 (1994) 313 -- 351.


Evaluating Performance and Power of Object-Oriented Vs. .. - Chatzigeorgiou..   (Correct)

....these techniques due to the additional performance overhead, in an environment with relatively limited computational power and memory resources. The introduced penalty on the system performance, in terms of execution time and memory overhead, has been demonstrated in the literature [8] 9] [10], 11] This inherent drawback of object oriented languages has forced the sot tware community to develop sophisticated compilers, which attempt to optimize the performance of OOP [12] 13] 14] An open standard defining a subset of C suitable for embedded applications has also been initiated ....

....double variable, for both Cstyle and OOP style. The number of memory accesses refers only to the benchmark kernel and consequently it reflects the increased data transfers when abstract data types are used, probably due to inefficient use of registers. This is consistent with the observation in [10] that one of the most striking differences between C and C , is that C programs issue more loads and stores than C programs. Benchmark code size (bytes) Instructions Cycles OOPACKI c 180 50536 77118 OOPACKI oop 212 56032 91605 OOP Penalty OOP Penalt Table 3: Performance comparison ....

Calder B., Gnmwald D., and Zom B.: Quantifying Behavioral Differences Between C and C++ Programs. Journal of Programming Languages, vol. 2, (1994) 313-351


A Study of Cache Performance in Java Virtual Machines - Rajan (2002)   (Correct)

....dynamic compilation techniques. Figure 1.5 The JIT Mode of Execution Program Source javac bytecodes JIT Native Machine Code 9 1.1.2. 4 Hardware Execution Yet another technique suggested to improve the performance of Java programs has been to use a hardware accelerator or coprocessor [22] that works in conjunction with a microprocessor. Essentially, the effort is to bridge the semantic gap that exists between the bytecodes and the native instructions. Java processors like Sun Microsystems Java cores and JEM are low cost hardware engines optimized to directly execute Java code. ....

B. Calder, D. Grunwald et al., Quantifying Behavioral Differences Between C and C++ Programs, Vol. 2, No. 4, pp 313-351, 1994. 76


Cache Performance in Java Virtual Machines: A Study of.. - Rajan, Rubio, John (2002)   (Correct)

....performance in the JIT compilation is always worse than that in the interpreted mode. The reason for this is the fact that the operation of the JIT is for the most part similar to that of a compiler and compilers do not have very good instruction locality (for example, gcc in the SPEC95 suite [18]) In addition, the code installed by the translator need not be contiguously placed in the cache, thus contributing to poorer performance. Exceptions to this are the benchmarks with high method reuse, where a small subset of the methods is accessed; this considerably diminishes the importance of ....

B.Calder, D.Grunwald and B.Zorn, Quantifying Behavioral Differences Between C and C++ Programs, Journal of Programming Languages, Vol. 2, No. 4, pp 313-351, 1995.


Microarchitectural Techniques to Enable Efficient Java Execution - Radhakrishnan (2000)   (Correct)

....in Java workload characterization. We also describe work done towards understanding the behavior of other object oriented languages, such as C . 2.2. 1 Object oriented workloads Calder et al. measured the behavior of a group of C and C programs and quantified the differences between them [17]. They found that programs written in the true object oriented paradigm exhibited a greater use of both dynamic dispatch and dynamic calls than other C and C programs. C programs were seen to execute more procedure calls, indirect procedure calls and returns which implied that different branch ....

....mix for each benchmark is presented in Table 3.5. Execution in the Java paradigm, either using the interpreter or JIT compiler, results in 15 to 20 control transfer instructions and 25 to 40 memory access instructions, a behavior not significantly different from traditional C and C programs [17]. Although memory accesses are observed to be frequent in the instruction stream in both modes, it is more frequent (by 39 Figure 3.1: Instruction mix for the SPECjvm98 benchmarks Control Transfer Computational Inst Memory Benchmark Branch Call Jump Arith Logical Shift Load Store compress ....

[Article contains additional citation context not shown here]

B. Calder, D. Grunwald, and B. Zorn. Quantifying behavioral differences between C and C++ programs . Journal of Programming Languages, 2(4), 1994.


Using Types to Analyze and Optimize Object-Oriented Programs - McKINLEY, MOSS (2001)   (6 citations)  (Correct)

....original running time Base Inlining Minv Minv RLE Minv RLE Inlining Fig. 26. Cumulative impact of optimizations. Figure 25 illustrates that most run time polymorphic method invocations arise because more than one type of object is stored in a heap slot. Two techniques, explicit type test [Calder and Grunwald 1994; Holzle and Ungar 1994] and cloning or splitting combined with aggressive alias analysis, may be able to resolve these method invocations. Merges in control are another important cause of the run time polymorphism, especially for trestle, and can be resolved by code splitting and cloning ....

....executed as their performance metric and found that the more powerful alias analysis did not significantly improve performance. We observe more performance improvement due to RLE, which may be because we measure object oriented programs as opposed to the C programs used by Cooper and Lu. Calder et al. 1994] show that C programs typically execute a smaller percentage of loads and stores than C programs. Debray et al. 1998] describe an alias analysis for executable code. They evaluate their algorithm by measuring the percentage of loads eliminated using loop invariant code motion and PRE of loads. ....

[Article contains additional citation context not shown here]

CALDER, B., GRUNWALD, D., AND ZORN, B. 1994. Quantifying behavioral differences between C and C++ programs. Tech. Rep. CU-CS-698-94, University of Colorado, Boulder, CO. Jan.


Compiler Optimization of C++ Virtual Function Calls - Porat, Bernstein, al. (1996)   (2 citations)  (Correct)

....call can be replaced by a conditional (type predicted) expression, so that the likely invoked function is called directly and others are invoked through the regular indirect mechanism. The topic of virtual function call optimization has been of great interest in the last years. Some papers ([8], 11] just report dynamic program characteristics of C programs and show that virtual calls are very common in C programming style. These studies are not proposing solutions, but provide the basic motivation for subsequent research works. Others, like [7] propose techniques for optimizing ....

B. Calder, D. Grunwald, and B. Zorn. Quantifying Behavioral Differences Between C and C++ Programs. Technical Report CU-CS-698-94, University of Colorado at Boulder, January 1994.


Java Runtime Systems: Characterization and.. - Radhakrishnan.. (2001)   (5 citations)  (Correct)

.... branches with a higher frequency than SPECint programs [35, 36] Figure 3 provides information on indirect branch frequency (i.e. Jumps) for the interpreted and JIT execution 3 This instruction mix is not significantly different from that of traditional C and C programs such as those used in [34] 16 modes. Comparing the two execution modes, the interpreter mode has higher percentage of indirect jumps (primarily due to register indirect jumps used to implement the switch statement in the interpreter) while the code in the JIT compiler case has higher percentage of branches and calls. ....

....locality, it is method locality, method footprint, and working set properties of the JIT compiler code that determine the instruction cache performance for the execution of code generated in the JIT mode. Compilers typically result in poor cache performance (as exemplified by gcc in the SPEC suite [34]) and compilation process is a major component of the JIT mode. For applications like db, jess and javac which spend a significant amount of time in the translation part (Figure 2) the I cache misses are more 19 dominant. The data cache performance of Java applications is worse than its ....

B. Calder, D. Grunwald, and B. Zorn, " Quantifying behavioral differences between C and C++ programs ," Journal of Programming Languages,vol. 2, no. 4, 1994.


The Cascaded Predictor: Economical and Adaptive Branch Target .. - Driesen, Hölzle (1998)   (25 citations)  (Correct)

....for clean, modular code design. Virtual function tables, the implementation of choice for most C and Java compilers, execute an indirect branch for every lately bound call. The C programs studied here execute an indirect branch as frequently as once every 50 instructions; other studies [CGZ94] have shown similar results. Java programs (where all non static calls are virtual) are likely to use indirect calls even more frequently. Even today, indirect branch misses can cause significant overheads. The overhead of virtual function calls in C programs on superscalar processors with ....

Brad Calder, Dirk Grunwald, and Benjamin Zorn. Quantifying Behavioral Differences Between C and C++ Programs. Journal of Programming Languages 2(4):313351, December 1994.


Eliminating Virtual Function Calls in C++ Programs - Aigner, Hölzle (1996)   (39 citations)  (Correct)

....of object oriented programs. Finally, we will continue to look for other C applications that can be used for benchmarking. Although we are already using large programs totalling over 90,000 lines of code, we feel that currently available benchmarks (including those used in other studies [CGZ94]) do not represent the entire spectrum of program characteristics. In particular, programs using large class libraries and frameworks are underrepresented. Fortunately, these programs are very likely to benefit even more from optimization (as discussed in section 6.2) and thus this ....

Brad Calder, Dirk Grunwald, and Benjamin Zorn. Quantifying Behavioral Differences Between C and C++ Programs. Journal of Programming Languages 2:313-351, 1994.


Microarchitectural and Compile-Time Optimizations for.. - Kalamatianos (2000)   (1 citation)  (Correct)

....results are presented to verify their effectiveness on both types of applications. 1.1. 1 Characteristics of Object Oriented languages Given the growing popularity of OOP, it is not surprising that many studies have focused on the behavior of programs written with object oriented languages [13, 14, 15, 16, 17]. A significant amount of research has also dealt with compiler optimizations and architectural support to improve the performance of object oriented software [18, 19, 20, 21, 22, 23, 24, 25, 26] OOP is fundamentally built around the concept of an object and its underlying model. An object is ....

....communication implement functionality. Given the same programming task, i.e. its algorithms and corresponding data structures) studies have shown that both the static and dynamic procedure count required to solve the problem tends to be larger in OOP, as compared to procedural programming. In [13], a detailed comparison between C and C applications was presented. The C applications were found to have 3 times as many static procedures and execute almost 90 more calls than C programs. Objects in OOP are often designed to be generic, allow code reuse and modularity, and promote ....

[Article contains additional citation context not shown here]

B. Calder, D. Grunwald, and B. Zorn. Quantifying Behavioral Differences between C and C++ programs. Journal of Programming Languages, 2(4):313--351, January 1994.


Do Object-Oriented Languages Need Special Hardware Support? - Hölzle, Ungar (1995)   (6 citations)  (Correct)

....studies [Kra83, Ung87] have shown calls to be much more frequent than in other languages. Even for a hybrid language like C (which has C at its core and thus shouldn t behave too differently at runtime) significant differences were found. Table 2 shows data from a study by Calder et al. [CGZ94] which measured the behavior of several large C applications and compared it to that of the SPECint92 suite and other C programs. The study used the GNU C and C compilers on the MIPS architecture. Even though C is similar in spirit to C, the differences in execution behavior are pronounced: ....

....line in the box) 25 75 percentiles (end of the box) and 5 95 percentiles (vertical lines) C SPECint92 ratio C SPEC basic block size 8.0 4.9 1.6 call return frequency 4.6 0.7 6.7 instructions per conditional branch 15.9 6.4 2.5 Table 2. Differences between C and C (from [CGZ94]) 4 one third of their time in such routines, and separating out SELF only ensures that our data is not biased by the execution behavior of non SELF code. On the other hand, showing SELF only could be misleading as well, since this data may not be representative of the instructions the ....

[Article contains additional citation context not shown here]

Brad Calder, Dirk Grunwald, and Benjamin Zorn. Quantifying Behavioral Differences Between C and C++ Programs. Technical Report CU-CS-698-94, University of Colorado, Boulder, January 1994.


Performance Impact of Object Oriented Programming - Radhakrishnan, Muthiah, John   (Correct)

....dinero tools that are available from the University of Wisconsin, Madison [15] 4 Related Research There has not been a lot of research investigating the behavioral differences between object oriented and non object oriented programs as it applies to program execution efficiency. Calder et al. [3] quantified the behavioral differences between C and C programs on the DEC Alpha architecture using the ATOM tracing tool [12] They observed several differences including 2 1. C programs often perform an order of magnitude more indirect procedural calls. 2. C and C programs have basic ....

....instructions etc. 5 Experiment Methodology This sections describes our benchmarks, profiling tools, and performance metrics. 5.1 Benchmarks A major problem in our research was the non availability of object oriented programs and their equivalent non object oriented counterparts. Calder et al. [3] used a representative set of C programs and a representative set of C programs. Calder et al. mention that many of their C programs were not written using object oriented methodology. While it is okay to include such programs in a set of representative C programs (representative of what ....

[Article contains additional citation context not shown here]

B. Calder, D. Grunwald, and B. Zorn, "Quantifying Behavioral Differences Between C and C++ Programs", Journal of Programming Languages, Vol. 2, Num 4, 1994.


Understanding and Improving the Performance of Modern Programming.. - Diwan (1997)   (1 citation)  (Correct)

....The graph shows that more than 50 of the time there are fewer than 60 instructions between method invocations. These instructions include those for passing parameters and for method lookup. Calder, Grunwald, and Zorn find similar rates of method invocations for a range of C programs [17]. With such frequent unknown control transfers, it is unlikely that the compiler can fully exploit prefetch instructions or instruction level parallelism. 13 0 20 40 60 80 100 0 50 100 150 200 250 300 Percent Instructions between method invocations Figure 2.2 Instruction distribution ....

Calder, B., Grunwald, D., and Zorn, B. Quantifying behavioral differences between C and C++ programs. Technical Report CU-CS-698-94, University of Colorado, Boulder, CO, Jan. 1994.


Indirect Branch Prediction using Data Compression Techniques - Kalamatianos, Kaeli (1999)   (2 citations)  (Correct)

....as conditional branches, but their associated misprediction overhead can be substantial, especially for superscalar architectures. Recent studies have reported that indirect branches appear much more frequently in object oriented languages (i.e. C ) than they do in procedural languages (i.e. C) [4]. The programming paradigm found in most OO languages such as C , Java, Smalltalk and Self supports polymorphism based on run time procedure binding [5] Most implementations generate an indirect function call for every polymorphic call [6] Indirect branches commonly appear in applications that ....

B. Calder, D. Grunwald, and B. Zorn. Quantifying Behavioral Differences between C and C++ programs. Journal of Programming Languages, 2(4):313--351, January 1994.


Using Types to Analyze and Optimize Object-Oriented Programs - Diwan, McKinley, Moss (2001)   (6 citations)  (Correct)

....each bar is the number of static method invocation sites corresponding to the method invocations represented by the bar. Figure 24 illustrates that most run time polymorphic method invocations arise because more than one type of object is stored in a heap slot. Two techniques, explicit type test [Calder and Grunwald 1994; Holzle and Ungar 1994] and cloning or splitting combined with aggressive alias analysis, may be able to resolve these method invocations. Merges in control are another important cause of the run time polymorphism, especially for trestle, and can be resolved by code splitting and cloning ....

....executed as their performance metric and found that the more powerful alias analysis did not significantly improve performance. We observe more performance improvement due to RLE, which may be because we measure object oriented programs as opposed to the C programs used by Cooper and Lu. Calder et al. 1994] show that C programs typically execute a smaller percentage of loads and stores than C programs. Debray et al. 1998] describe an alias analysis for executable code. They evaluate their algorithm by measuring the percentage of loads eliminated using loop invariant code motion and PRE of loads. ....

[Article contains additional citation context not shown here]

CALDER, B., GRUNWALD, D., AND ZORN, B. 1994. Quantifying behavioral differences between C and C++ programs. Tech. Rep. CU-CS-698-94, University of Colorado, Boulder, CO. Jan.


Turning Predicate Information to Advantage to Improve Compiler.. - Simon (2002)   Self-citation (Calder)   (Correct)

No context found.

Brad Calder, Dirk Grunwald, and Benjamin Zorn. Quantifying behavioral differences between C and C++ programs. Journal of Programming Languages, 2(4):313--351, 1994.


Implementing Heap-Object Behavior Prediction Efficiently and.. - Seidl, al. (2000)   (3 citations)  Self-citation (Zorn)   (Correct)

....management, program customization, reference locality 1. Introduction The reference locality of heap allocated objects is important in many applications. As we have documented in previous work, object oriented languages, such as Java and C , encourage significant use of heap allocated objects [5, 18]. Frequently applications written in these languages require large physical memories, but are Correspondence to: Matthew L. Seidl Department of Computer Science University of Colorado, CB430 Boulder, CO 80309 0430 USA seidl cs.colorado.edu CCC 0038 0644 00 010001 28517.50 Copyright 2000 ....

Calder B, Grunwald D, Zorn B. Quantifying Behavioral Differences Between C and Programs Journal of Programming Languages, 1994; 2(4):313-351.


The UCSD Active Web - Pasquale (1997)   Self-citation (Calder)   (Correct)

....and bypassing the Java interpreter [74] showing that they can compile and produce fairly efficient native code from Java bytecodes. We are investigating more advanced optimizations such as code layout, data layout, and method optimizations, which we have researched in the past in other contexts [23] [25] 69] 24] G.2.3.2 Operating System Support An operating system controls local resources, and allocates them to processes. When an agent arrives at an Active Web resource server, it will generally expect a certain level of performance, especially if it is willing to pay. For example, an ....

B. Calder, D. Grunwald, and B. Zorn, "Quantifying Behavioral Differences Between C and C++ Programs," Journal of Programming Languages, Vol. 2, No. 4, 1994.


Efficient Procedure Mapping using Cache Line Coloring - Hashemi, Kaeli, Calder (1996)   (28 citations)  Self-citation (Calder)   (Correct)

....Therefore, moving a procedure should be followed by filling the space left by the procedure with other procedures, otherwise this can result in a chain of relocations that are hard to manage. Studies of program behaviors show that 10 to 30 of a program accounts for 90 of its execution time [5]. The rest of the code is not heavily exercised or is often not even executed. Our algorithm takes advantage of this property by dividing each program into frequently executed (popular) and infrequently 2 C A B D F G E 100 90 80 70 40 0 0 Procedure # Cache Lines A B A C D E ....

B. Calder, D. Grunwald, and B. Zorn. Quantifying behavioral differences between C and C++ programs. Journal of Programming Languages, 2(4), 1994.


Cache Performance in Java Virtual Machines: A Study of.. - Rajan, Hu, Rubio   (Correct)

No context found.

B. Calder, D. Grunwald, and B. Zorn, "Quantifying Behavioral Differences Between C and C++ Programs", Journal of Programming Languages, Vol. 2, No. 4, 1995, pp. 313-351.


Segregated Binary Trees: Address-Ordered Binary Trees Revisited - Kavi   (Correct)

No context found.

B. Calder, D. Grunwald and B. Zorn. "Quantifying behavioral differences between C and C++ programs", Tech Rept. CU-CS-698-95, Dept of CS, University of Colorado, Boulder, CO, Jan 1995.


Trap-driven Memory Simulation - Uhlig (1995)   (2 citations)  (Correct)

No context found.

Calder, B., Grunwald, D. and Zorn, B. Quantifying behavioral differences between C and C++ programs. Technical Report, The Department of Computer Science, University of Colorado. CU-CS-698-94, 1994.


Software and Hardware Techniques for Efficient Polymorphic Calls - Driesen (1999)   (2 citations)  (Correct)

No context found.

Brad Calder, Dirk Grunwald, and Benjamin Zorn. Quantifying Behavioral Differences Between C and C++ Programs. Journal of Programming Languages, pages 313-351, Vol 2, Num 4, 1994.

First 50 documents  Next 50

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