97 Things Every Programmer Should Know

(Chris Devlin) #1

(^82) 97 Things Every Programmer Should Know


Interprocess Communication


Affects Application


Response Time


Randy Stafford


RESPONSE TiME iS CRiTiCAL TO SOFTWARE USABiLiTY. Few things are as
frustrating as waiting for some software system to respond, especially when
our interaction with the software involves repeated cycles of stimulus and
response. We feel as if the software is wasting our time and affecting our pro-
ductivity. However, the causes of poor response time are less well appreciated,
especially in modern applications. Much performance management literature
still focuses on data structures and algorithms, issues that can make a differ-
ence in some cases but are far less likely to dominate performance in modern
multitier enterprise applications.


When performance is a problem in such applications, my experience has been
that examining data structures and algorithms isn’t the right place to look for
improvements. Response time depends most strongly on the number of remote
interprocess communications (IPCs) conducted in response to a stimulus.
While there can be other local bottlenecks, the number of remote interprocess
communications usually dominates. Each remote interprocess communication
contributes some nonnegligible latency to the overall response time, and these
individual contributions add up, especially when they are incurred in sequence.


A prime example is ripple loading in an application using object-relational
mapping. Ripple loading describes the sequential execution of many database
calls to select the data needed for building a graph of objects (see Lazy Load*
in Martin Fowler’s Patterns of Enterprise Application Architecture [Addison-
Wesley Professional]). When the database client is a middle-tier application
server rendering a web page, these database calls are usually executed sequen-
tially in a single thread. Their individual latencies accumulate, contributing to
the overall response time. Even if each database call takes only 10 milliseconds,


*ttp://martinfowler.com/eaaCatalog/lazyLoad.html h

Free download pdf