Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Urs Hölzle

dblp:h/UrsHolzle · DBLP profile ↗
← Back
27ranked-venue papers
8as first author
1since 2021 · last 2026
0009-0006-0246-9437ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 22 · 8 first-author · 1 since 2021Systems, architecture and hardware · 6 · 1 first-author · 1 since 2021Computer networks · 2

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Computer networks
4 papers
Software-defined and programmable networks · 31% Routing and switching · 31% Datacenter networks · 18%
Software engineering, system software, and programming languages
10 papers
Compilers and program optimization · 38% Programming languages and type systems · 20% Runtime systems and virtual machines · 18%
Computer architecture, parallel and distributed computing, and storage systems
5 papers
Processor architecture and microarchitecture · 49% Cloud and datacenter computing · 29% Performance modeling and evaluation · 12%
Databases, data mining, and information retrieval
2 papers
Information retrieval · 72% Data mining · 21% Query processing and optimization · 7%

Topics — the 30 heaviest of 39, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Software-defined and programmable networks › control plane
centralized control
0.212015
Jupiter Rising: A Decade of Clos Topologies and Centralized Control in Google's Datacenter Network · SIGCOMM 2015
Routing and switching › switching networks › multistage interconnection network
clos network
0.212015
Jupiter Rising: A Decade of Clos Topologies and Centralized Control in Google's Datacenter Network · SIGCOMM 2015
Internet architecture and protocols › traffic management
bandwidth management
0.212013
B4: experience with a globally-deployed software defined wan · SIGCOMM 2013
Datacenter networks
datacenter interconnect
0.212013
B4: experience with a globally-deployed software defined wan · SIGCOMM 2013
Software-defined and programmable networks › SDN applications
software-defined WAN
0.212013
B4: experience with a globally-deployed software defined wan · SIGCOMM 2013
Routing and switching
traffic engineering
0.212013
B4: experience with a globally-deployed software defined wan · SIGCOMM 2013
Datacenter networks
datacenter routing
0.112015
Jupiter Rising: A Decade of Clos Topologies and Centralized Control in Google's Datacenter Network · SIGCOMM 2015
Information retrieval
web search
0.112005
Google: or how I learned to love terabytes · SIGMETRICS 2005
Processor architecture and microarchitecture
branch prediction
0.021998
The Cascaded Predictor: Economical and Adaptive Branch Target Prediction · MICRO 1998
Accurate Indirect Branch Prediction · ISCA 1998
Programming languages and type systems › method dispatch
dynamic dispatch
0.031996
The Direct Cost of Virtual Function Calls in C++ · OOPSLA 1996
Minimizing Row Displacement Dispatch Tables · OOPSLA 1995
Reconciling Responsiveness with Performance in Pure Object-Orieted Languages · ACM Trans. Program. Lang. Syst. 1996
Compilers and program optimization › interprocedural optimization
inlining
0.021996
Reconciling Responsiveness with Performance in Pure Object-Orieted Languages · ACM Trans. Program. Lang. Syst. 1996
Type Feedback vs. Concrete Type Inference: A Comparison of Optimization Techniques for Object-Oriented Languages · OOPSLA 1995
Compilers and program optimization
dynamic optimization
0.021996
Reconciling Responsiveness with Performance in Pure Object-Orieted Languages · ACM Trans. Program. Lang. Syst. 1996
A Third-Generation SELF Implementation: Reconsiling Responsiveness with Performance · OOPSLA 1994
Program analysis
data flow analysis
0.011999
Removing Unnecessary Synchronization in Java · OOPSLA 1999
Concurrent programming
synchronization
0.011999
Removing Unnecessary Synchronization in Java · OOPSLA 1999
Compilers and program optimization › parallel program optimization › synchronization optimization
synchronization elimination
0.011999
Removing Unnecessary Synchronization in Java · OOPSLA 1999
Processor architecture and microarchitecture › branch prediction
indirect branch prediction
0.011998
Accurate Indirect Branch Prediction · ISCA 1998
Processor architecture and microarchitecture › branch prediction
two-level adaptive branch prediction
0.011998
Accurate Indirect Branch Prediction · ISCA 1998
Data mining › big data analytics
large-scale data mining
0.012005
Google: or how I learned to love terabytes · SIGMETRICS 2005
High-performance computing › data-intensive computing
large-scale data processing
0.012005
Google: or how I learned to love terabytes · SIGMETRICS 2005
Compilers and program optimization
interprocedural optimization
0.011996
Reconciling Responsiveness with Performance in Pure Object-Orieted Languages · ACM Trans. Program. Lang. Syst. 1996
Performance modeling and evaluation
workload characterization
0.011996
The Direct Cost of Virtual Function Calls in C++ · OOPSLA 1996
Programming languages and type systems › object-oriented programming
multiple inheritance
0.011995
Minimizing Row Displacement Dispatch Tables · OOPSLA 1995
Runtime systems and virtual machines
dynamic compilation
0.011994
A Third-Generation SELF Implementation: Reconsiling Responsiveness with Performance · OOPSLA 1994
Compilers and program optimization › compiler optimization › type-based optimization
dynamic dispatch optimization
0.011994
Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback · PLDI 1994
Runtime systems and virtual machines
virtual machine implementation
0.011994
A Third-Generation SELF Implementation: Reconsiling Responsiveness with Performance · OOPSLA 1994
Programming languages and type systems › object-oriented programming
object-oriented languages
0.031995
Type Feedback vs. Concrete Type Inference: A Comparison of Optimization Techniques for Object-Oriented Languages · OOPSLA 1995
Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback · PLDI 1994
A Third-Generation SELF Implementation: Reconsiling Responsiveness with Performance · OOPSLA 1994
Debugging and program repair › software debugging
debugging optimized code
0.011992
Debugging Optimized Code with Dynamic Deoptimization · PLDI 1992
Runtime systems and virtual machines › dynamic compilation › just-in-time compilation
deoptimization
0.011992
Debugging Optimized Code with Dynamic Deoptimization · PLDI 1992
Runtime systems and virtual machines › virtual machine implementation
java virtual machine
0.011999
Reducing Transfer Delay Using Java Class File Splitting and Prefetching · OOPSLA 1999
Performance modeling and evaluation › simulation
processor simulation
0.011996
The Direct Cost of Virtual Function Calls in C++ · OOPSLA 1996

Methods — techniques the papers use, named apart from their topics

rate limiting · 0.3centralized traffic engineering · 0.3measurement · 0.1prefetching · 0.0class file splitting · 0.0incremental result delivery · 0.0fast searching primitives · 0.0processor simulation · 0.0executable inspection · 0.0interprocedural data flow analysis · 0.0flow- and context-insensitive analysis · 0.0two-level prediction · 0.0cascaded prediction · 0.0profile-guided optimization · 0.0profile-based receiver class prediction · 0.0
YearPublicationVenuePosition
2026 Prometheus: Toward Resilient Data Centers through Optimized Cooling Infrastructure
Sourav Patel, Youzhi Liang, Thomas Kowalski, Nick Care, Greg Imwalle, Rita Lu, Jeremy Rice, Nick Saddock, Rick Vengalath, Urs Hölzle, Benjamin C. Lee, Parthasarathy Ranganathan
ISCA12
2015 Jupiter Rising: A Decade of Clos Topologies and Centralized Control in Google's Datacenter Network
abstract
We present our approach for overcoming the cost, operational complexity, and limited scale endemic to datacenter networks a decade ago. Three themes unify the five generations of datacenter networks detailed in this paper. First, multi-stage Clos topologies built from commodity switch silicon can support cost-effective deployment of building-scale networks. Second, much of the general, but complex, decentralized network routing and management protocols supporting arbitrary deployment scenarios were overkill for single-operator, pre-planned datacenter networks. We built a centralized control mechanism based on a global configuration pushed to all datacenter switches. Third, modular hardware design coupled with simple, robust software allowed our design to also support inter-cluster and wide-area networks. Our datacenter networks run at dozens of sites across the planet, scaling in capacity by 100x over ten years to more than 1Pbps of bisection bandwidth.
Joon Ong, Glen Anderson, Ashby Armistead, Roy Bannon, Seb Boving, Gaurav Desai, Bob Felderman, Paulie Germano, Anand Kanagala, Jeff Provost, Jason Simmons, Eiichi Tanda, Jim Wanderer, Urs Hölzle, Stephen Stuart, Amin Vahdat
SIGCOMM16
2013 B4: experience with a globally-deployed software defined wan
abstract
We present the design, implementation, and evaluation of B4, a private WAN connecting Google's data centers across the planet. B4 has a number of unique characteristics: i) massive bandwidth requirements deployed to a modest number of sites, ii) elastic traffic demand that seeks to maximize average bandwidth, and iii) full control over the edge servers and network, which enables rate limiting and demand measurement at the edge.
Sushant Jain, Subhasree Mandal, Joon Ong, Leonid B. Poutievski, Subbaiah Venkata, Jim Wanderer, Junlan Zhou, Jonathan Zolla, Urs Hölzle, Stephen Stuart, Amin Vahdat
SIGCOMM12
2005 Google: or how I learned to love terabytes
abstract
Search is one of the most important applications used on the internet, but it also poses some of the most interesting challenges in computer science. Providing high-quality search requires understanding across a wide range of computer science disciplines, from lower-level systems issues like computer architecture and distributed systems to applied areas like information retrieval, machine learning, data mining, and user interface design.In this talk I'll share some interesting observations and measurements obtained at Google, and will illustrate the behind-the-scenes pieces of infrastructure (both hardware and software) that we've built in order to extract this information from many terabytes of data.
Urs Hölzle
SIGMETRICS1
2004 Monkey See, Monkey Do: A Tool for TCP Tracing and Replaying
Yuchung Cheng, Urs Hölzle, Neal Cardwell, Stefan Savage, Geoffrey M. Voelker
USENIX ATC, General Track2
2003 Dynamic Query-Based Debugging of Object-Oriented Programs
Raimondas Lencevicius, Urs Hölzle, Ambuj K. Singh
Autom. Softw. Eng.2
1999 A Study of the Allocation Behavior of the SPECjvm98 Java Benchmark
Sylvia Dieckmann, Urs Hölzle
ECOOP2
1999 Dynamic Query-Based Debugging
Raimondas Lencevicius, Urs Hölzle, Ambuj K. Singh
ECOOP2
1999 Multi-stage Cascaded Prediction
Karel Driesen, Urs Hölzle
Euro-Par2
1999 Removing Unnecessary Synchronization in Java
abstract
Java programs perform many synchronization operations on data structures. Some of these synchronization are unnecessary; in particular, if an object is reachable only by a single thread, concurrent access is impossible and no synchronization is needed. We describe an interprocedural, flow- and context-insensitive dataflow analysis that finds such situations. A global optimizing transformation then eliminates synchronizations on these objects. For every program in our suite of ten Java benchmarks consisting of SPECjvm98 and others, our system optimizes over 90% of the alias sets containing at least one synchronized object. As a result, the dynamic frequency of synchronizations is reduced by up to 99%. For two benchmarks that perform synchronizations very frequently, this optimization leads to speedups of 36% and 20%.
Jeff Bogda, Urs Hölzle
OOPSLA2
1999 Reducing Transfer Delay Using Java Class File Splitting and Prefetching
abstract
The proliferation of the Internet is fueling the development of mobile computing environments in which mobile code is executed on remote sites. In such environments, the end user must often wait while the mobile program is transferred from the server to the client where it executes. This downloading can create significant delays, hurting the interactive experience of users.
Chandra Krintz, Brad Calder, Urs Hölzle
OOPSLA3
1998 Binary Component Adaptation
Ralph Keller, Urs Hölzle
ECOOP2
1998 Accurate Indirect Branch Prediction
abstract
Indirect branch prediction is likely to become increasingly important in the fixture because indirect branches occur more frequently in object-oriented programs. With misprediction rates of around 25% on current processors, indirect branches can incur a significant fraction of branch misprediction overhead even though they remain less frequent than the more predictable conditional branches. We investigate a wide range of two-level predictors dedicated exclusively to indirect branches. Starting with predictors that useful-precision addresses and unlimited tables, we progressively introduce hardware constraints and minimize the loss of predictor performance at each step. For programs from the SPECint95 suite as well as a suite of large C++ applications, a two-level predictor achieves a misprediction rate of 9.8% with a 1 K-entry table and 7.3% with an 8 K-entry table, representing more than a threefold improvement over an ideal BTB. A hybrid predictor further reduces the misprediction rates to 8.98% (1 K) and 5.95% (8 K).
Karel Driesen, Urs Hölzle
ISCA2
1998 The Cascaded Predictor: Economical and Adaptive Branch Target Prediction
abstract
Two-level predictors improve branch prediction accuracy by allowing predictor tables to hold multiple predictions per branch. Unfortunately, the accuracy of such predictors is impaired by two detrimental effects. Capacity misses increase since each branch may occupy many entries, depending on the number of different path histories leading up to the branch. The working set of a given program therefore increases with history length. Similarly, cold start misses increase with history length since the predictor must first store a prediction separately for each history pattern before it can predict branches with that history. We describe a new hybrid predictor architecture, cascaded branch prediction, which can alleviate both of these effects while retaining the superior accuracy of two level predictors. Cascaded predictors dynamically classify and predict easily predicted branches using an inexpensive predictor, preventing insertion of these branches into a more powerful second stage predictor. We show that for path-based indirect branch predictors, cascaded prediction obtains prediction rates equivalent to that of two-level predictors at approximately one fourth the cost. For example, a cascaded predictor with 64+1024 entries achieves the same prediction accuracy as a 4096-entry two-level predictor. Although we have evaluated cascaded prediction only on indirect branches, we believe that it could also improve conditional branch prediction and value prediction.
Karel Driesen, Urs Hölzle
MICRO2
1997 Query-Based Debugging of Object-Oriented Programs
abstract
Object relationships in modem software systems are becoming increasingly numerous and complex. Programmers who try to find violations of such relationships need new tools that allow them to explore objects in a large system more efficiently. Many existing debuggers present only a low-level, one-object-at-a-time view of objects and their relationships. We propose a new solution to overcome these problems: query-based debugging. The implementation of the query-based debugger described here offers programmers an effective query tool that allows efficient searching of large object spaces and quick verification of complex relationships. Even for programs that have large numbers of objects, the debugger achieves interactive response times for common queries by using a combination of fast searching primitives, query optimization, and incremental result delivery.
Raimondas Lencevicius, Urs Hölzle, Ambuj K. Singh
OOPSLA2
1996 Eliminating Virtual Function Calls in C++ Programs
Gerald Aigner, Urs Hölzle
ECOOP2
1996 The Direct Cost of Virtual Function Calls in C++
abstract
We study the direct cost of virtual function calls in C++ programs, assuming the standard implementation using virtual function tables. We measure this overhead experimentally for a number of large benchmark programs, using a combination of executable inspection and processor simulation. Our results show that the C++ programs measured spend a median of 5.2% of their time and 3.7% of their instructions in dispatch code. For "all virtuals" versions of the programs, the median overhead rises to 13.7% (13% of the instructions). The "thunk" variant of the virtual function table implementation reduces the overhead by a median of 21% relative to the standard implementation. On future processors, these overheads are likely to increase moderately.
Karel Driesen, Urs Hölzle
OOPSLA2
1996 Reconciling Responsiveness with Performance in Pure Object-Orieted Languages
abstract
Dynamically dispatched calls often limit the performance of object-oriented programs, since opject-oriented programming encourages factoring code into small, reusable units, thereby increasing the frequency of these expensive operations. Frequent calls not only slow down execution with the dispatch overhead per se, but more importantly they hinder optimization by limiting the range and effectiveness of standard global optimizations. In particular, dynamically dispatched calles prevent standard interprocedual optimizations that depend on the availability of a static call graph. The SELF implementation described here offers tow novel approaches to optimization. Type feedback speculatively inlines dynamically dispatched calls based on profile information that predicts likely receiver classes. Adaptive optimization reconciles optimizing compilation with interactive performance by incrementally optimizing only the frequently executed parts of a program. When combined, these two techniques result in a system that can execute programs significantly faster than previous systems while retaining much of the interactiveness of an interpreted system.
Urs Hölzle, David M. Ungar
ACM Trans. Program. Lang. Syst.1
1995 Message Dispatch on Pipelined Processors
Karel Driesen, Urs Hölzle, Jan Vitek
ECOOP2
1995 Do Object-Oriented Languages Need Special Hardware Support?
Urs Hölzle, David M. Ungar
ECOOP1
1995 Type Feedback vs. Concrete Type Inference: A Comparison of Optimization Techniques for Object-Oriented Languages
abstract
Two promising optimization techniques for object-oriented languages are type feedback (profile-based receiver class prediction) and concrete type inference (static analysis). We directly compare the two techniques, evaluating their effectiveness on a suite of 23 SELF programs while keeping other factors constant.Our results show that both systems inline over 95% of all sends and deliver similar overall performance with one exception: SELF's automatic coercion of machine integers to arbitrary-precision integers upon overflow confounds type inference and slows down arithmetic-intensive benchmarks.We discuss several other issues which, given the comparable run-time performance, may influence the choice between type feedback and type inference.
Ole Agesen, Urs Hölzle
OOPSLA2
1995 Minimizing Row Displacement Dispatch Tables
abstract
Row displacement dispatch tables implement message dispatching for dynamically-typed languages with a run time overhead of one memory indirection plus an equality test. The technique is similar to virtual function table lookup, which is, however, restricted to statically typed languages like C++. We show how to reduce the space requirements of dispatch tables to approximately the same size as virtual function tables. The scheme is then generalized for multiple inheritance. Experiments on a number of class libraries from five different languages demonstrate that the technique is effective for a broad range of programs. Finally, we discuss optimizations of the row displacement algorithm that allow dispatch table construction of these large samples to take place in a few seconds.
Karel Driesen, Urs Hölzle
OOPSLA2
1994 A Third-Generation SELF Implementation: Reconsiling Responsiveness with Performance
abstract
Programming systems should be both responsive (to support rapid development) and efficient (to complete computations quickly). Pure object-oriented languages are harder to implement efficiently since they need optimization to achieve good performance. Unfortunately, optimization conflicts with interactive responsiveness because it tends to produce long compilation pauses, leading to unresponsive programming environments. Therefore, to achieve good responsiveness, existing exploratory programming environments such as the Smalltalk-80 environment rely on interpretation or non-optimizing dynamic compilation. But such systems pay a price for their interactiveness, since they may execute programs several times slower than an optimizing system.
Urs Hölzle, David M. Ungar
OOPSLA1
1994 Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback
abstract
AbstrachObject-oriented programs are difficult to optimize because they execute many dynamically-dispatched calls.These calls cannot easily be eliminated because the compiler does not know which callee will be invoked at runtime.We have developed a simple technique that feeds back type information from the runtime system to the compiler.With this type feedback, the compiler can inline any dynamically-dispatched call.Our compiler drastically reduces the calI frequency of a suite of large SELF applications (by a factor of 3.6) and improves performance by a factor of 1.7.We believe that type feedback could significantly reduce call frequencies and improve performance for most other objectoriented languages (statically-typed or not) as well as for languages with type-dependent operations such as generic arithmetic.
Urs Hölzle, David M. Ungar
PLDI1
1993 Integrating Independently-Developed Components in Object-Oriented Languages
Urs Hölzle
ECOOP1
1992 Debugging Optimized Code with Dynamic Deoptimization
abstract
SELF's debugging system provides complete source-level debugging (expected behavior) with globally optimized code. It shields the debugger from optimizations performed by the compiler by dynamically deoptimizing code on demand. Deoptimization only affects the procedure activations that are actively being debugged; all other code runs at full speed. Deoptimization requires the compiler to supply debugging information at discrete interrupt points; the compiler can still perform extensive optimizations between interrupt points without affecting debuggability. At the same time, the inability to interrupt between interrupt points is invisible to the user. Our debugging system also handles programming changes during debugging. Again, the system provides expected behavior: it is possible to change a running program and immediately observe the effects of the change. Dynamic deoptimization transforms old compiled code (which may contain inlined copies of the old version of the changed procedure) into new versions reflecting the current source-level state. To the best of our knowledge, SELF is the first practical system providing full expected behavior with globally optimized code.
Urs Hölzle, Craig Chambers, David M. Ungar
PLDI1
1991 Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches
Urs Hölzle, Craig Chambers, David M. Ungar
ECOOP1