[prev in list] [next in list] [prev in thread] [next in thread] 

List:       extremeprogramming
Subject:    RE: [XP] When should you do performance optimization?
From:       "Kent Beck" <kentb () earthlink ! net>
Date:       2008-01-28 22:24:56
Message-ID: 006401c861fc$9d1cc3a0$6a01a8c0 () kentspavilion
[Download RAW message or body]

Dear David,
 
Some performance improvements simplify and clarify the design. Those should
be done as soon as possible. Some performance problems need to be solved
*now*. In either case, bending the design in the direction of performance is
the right thing to do. The difficult situation is when you can see a way to
complicate the design to meet future performance needs. Then you have
certain cost now to potentially gain benefit and avoid cost later.
 
My strategy is first to make sure I know where I stand with respect to
performance. What I sketched as I was thinking about your question was a
curve of the necessary performance over the next several years. I want the
system to stay comfortably ahead of this curve.
 
I have had a hard time writing deterministic performance tests. That's why I
like quantitative measures (like the min/max/mean someone mentioned) and
then tracking those over time. Even though they don't carry the reassurance
of red/green, anyone who cares about performance can see where the system is
with respect to performance goals and see trends so they can predict
problems.
 
Ken Auer and I wrote a paper called Lazy Optimization which summarizes my
philosophy. I don't think it's available online, but the short form is to
only optimize based on actual data and actual need.
 
Regards,
 
Kent Beck
Three Rivers Institute

  _____  

From: extremeprogramming@yahoogroups.com
[mailto:extremeprogramming@yahoogroups.com] On Behalf Of dpeterson72
Sent: Monday, January 28, 2008 3:15 AM
To: extremeprogramming@yahoogroups.com
Subject: [XP] When should you do performance optimization?



How much should you compromise today's simple design for tomorrow's
potential scalability problems? How do you make the call?

David
---
David Peterson
http://blog. <http://blog.davidpeterson.co.uk> davidpeterson.co.uk
http://www.concordi <http://www.concordion.org> on.org



 


[Non-text portions of this message have been removed]


[Attachment #3 (text/html)]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" \
"http://www.w3.org/TR/html4/strict.dtd"> <html>
<head>
</head>




<body style="background-color: #ffffff;">

<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id="ygrp-mlmsg" style="width:655px; position:relative;">
  <div id="ygrp-msg" style="width: 490px; padding: 0 15px 0 0; float:left;  \
z-index:1;"> <!--~-|**|PrettyHtmlEndT|**|-~-->

    <div id="ygrp-text">
            <p>Dear David,<br>
 <br>
Some performance improvements simplify and clarify the design. Those should<br>
be done as soon as possible. Some performance problems need to be solved<br>
*now*. In either case, bending the design in the direction of performance is<br>
the right thing to do. The difficult situation is when you can see a way to<br>
complicate the design to meet future performance needs. Then you have<br>
certain cost now to potentially gain benefit and avoid cost later.<br>
 <br>
My strategy is first to make sure I know where I stand with respect to<br>
performance. What I sketched as I was thinking about your question was a<br>
curve of the necessary performance over the next several years. I want the<br>
system to stay comfortably ahead of this curve.<br>
 <br>
I have had a hard time writing deterministic performance tests. That's why I<br>
like quantitative measures (like the min/max/mean someone mentioned) and<br>
then tracking those over time. Even though they don't carry the reassurance<br>
of red/green, anyone who cares about performance can see where the system is<br>
with respect to performance goals and see trends so they can predict<br>
problems.<br>
 <br>
Ken Auer and I wrote a paper called Lazy Optimization which summarizes my<br>
philosophy. I don't think it's available online, but the short form is to<br>
only optimize based on actual data and actual need.<br>
 <br>
Regards,<br>
 <br>
Kent Beck<br>
Three Rivers Institute<br>
<br>
_____  <br>
<br>
From: <a href="mailto:extremeprogramming%40yahoogroups.com">extremeprogramming@<wbr>yahoogroups.<wbr>com</a><br>
 [mailto:<a href="mailto:extremeprogramming%40yahoogroups.com">extremeprogramming@<wbr>yahoogroups.<wbr>com</a>] \
                On Behalf Of dpeterson72<br>
Sent: Monday, January 28, 2008 3:15 AM<br>
To: <a href="mailto:extremeprogramming%40yahoogroups.com">extremeprogramming@<wbr>yahoogroups.<wbr>com</a><br>
                
Subject: [XP] When should you do performance optimization?<br>
<br>
How much should you compromise today's simple design for tomorrow's<br>
potential scalability problems? How do you make the call?<br>
<br>
David<br>
---<br>
David Peterson<br>
<a href="http://blog.">http://blog.</a> &lt;<a \
href="http://blog.davidpeterson.co.uk">http://blog.<wbr>davidpeterson.<wbr>co.uk</a>&gt; \
davidpeterson.<wbr>co.uk<br> <a href="http://www.concordi">http://www.concordi</a> \
&lt;<a href="http://www.concordion.org">http://www.concordi<wbr>on.org</a>&gt; \
on.org<br> <br>
[Non-text portions of this message have been removed]<br>
<br>
</p>
    </div>  

    <!--~-|**|PrettyHtmlStart|**|-~-->
    <span width="1" style="color: white;">__._,_.___</span>
    <!-- Start the section with Message In topic -->
    <div id="ygrp-actbar">
              <span class="left">
          <a href="http://groups.yahoo.com/group/extremeprogramming/message/138418;_yl \
c=X3oDMTM4djhmdGVnBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BG1zZ0lkAzEzODQzMwRzZWMDZnRyBHNsawN2dHBjBHN0aW1lAzEyMDE1NTkxMTcEdHBjSWQDMTM4NDE4">
                
            Messages in this topic          </a> (<span class="bld">10</span>)
        </span>
        <a href="http://groups.yahoo.com/group/extremeprogramming/post;_ylc=X3oDMTJyMT \
d0NWYwBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BG1zZ0lkAzEzODQzMwRzZWMDZnRyBHNsawNycGx5BHN0aW1lAzEyMDE1NTkxMTc-?act=reply&messageNum=138433">
  <span class="bld">
            Reply          </span> (via web post)
        </a>  | 
        <a href="http://groups.yahoo.com/group/extremeprogramming/post;_ylc=X3oDMTJlbT \
VnOXFpBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTIwMTU1OTExNw--" \
class="bld">  Start a new topic        </a>
          </div> 
    <!-------     Start Nav Bar  ------>
    <!-- |**|begin egp html banner|**| -->
    <div id="ygrp-vitnav">
                <a href="http://groups.yahoo.com/group/extremeprogramming/messages;_yl \
c=X3oDMTJlcjg5bHN0BF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA21zZ3MEc3RpbWUDMTIwMTU1OTExNw--">Messages</a> \
  |    <a href="http://groups.yahoo.com/group/extremeprogramming/files;_ylc=X3oDMTJmcz \
NoOHRiBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA2ZpbGVzBHN0aW1lAzEyMDE1NTkxMTc-">Files</a> \
  |    <a href="http://groups.yahoo.com/group/extremeprogramming/photos;_ylc=X3oDMTJlY \
zNzajJsBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA3Bob3QEc3RpbWUDMTIwMTU1OTExNw--">Photos</a> \
  |    <a href="http://groups.yahoo.com/group/extremeprogramming/links;_ylc=X3oDMTJmZT \
FpdGVoBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA2xpbmtzBHN0aW1lAzEyMDE1NTkxMTc-">Links</a> \
  |    <a href="http://groups.yahoo.com/group/extremeprogramming/database;_ylc=X3oDMTJ \
jbGgza2VyBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA2RiBHN0aW1lAzEyMDE1NTkxMTc-">Database</a> \
  |    <a href="http://groups.yahoo.com/group/extremeprogramming/polls;_ylc=X3oDMTJmYW \
NtZTFwBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA3BvbGxzBHN0aW1lAzEyMDE1NTkxMTc-">Polls</a> \
  |    <a href="http://groups.yahoo.com/group/extremeprogramming/members;_ylc=X3oDMTJl \
aWExODhhBF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA21icnMEc3RpbWUDMTIwMTU1OTExNw--">Members</a> \
  
    </div>  
    <!-- |**|end egp html banner|**| -->

                <div id="ygrp-grft">
                  
<!-- |**|begin egp html banner|**| -->

          To Post a message, send it to:&nbsp;&nbsp; \
extremeprogramming@eGroups.com<BR> <BR>
To Unsubscribe, send a blank message to: \
extremeprogramming-unsubscribe@eGroups.com<BR> <BR>
ad-free courtesy of objectmentor.com          
<!-- |**|end egp html banner|**| -->

              </div>
    
    <!-- yahoo logo -->
    <!-- |**|begin egp html banner|**| -->
    <div id="ygrp-ft">
      <a href="http://groups.yahoo.com/;_ylc=X3oDMTJkb21laTIyBF9TAzk3MzU5NzE0BGdycElkA \
                zE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMjAxNTU5MTE3">
                
      <img src="http://us.i1.yimg.com/us.yimg.com/i/yg/img/logo/ma_grp_160.gif" \
height="15" width="106" border="0" alt="Yahoo! Groups"></a> <br>  <a \
href="http://groups.yahoo.com/group/extremeprogramming/join;_ylc=X3oDMTJmZDRkMjRlBF9TA \
zk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA3N0bmdzBHN0aW1lAzEyMDE1NTkxMTc-">Change \
settings via the Web</a> (Yahoo! ID required) <br>  Change settings via email: <a \
href="mailto:extremeprogramming-digest@yahoogroups.com?subject=Email Delivery: \
Digest">Switch delivery to Daily Digest</a> | <a href = \
"mailto:extremeprogramming-traditional@yahoogroups.com?subject=Change Delivery \
Format: Traditional">Switch format to Traditional</a> <br>

      <a href="http://groups.yahoo.com/group/extremeprogramming;_ylc=X3oDMTJkOGo2ZnMyB \
F9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA2hwZgRzdGltZQMxMjAxNTU5MTE3">
  Visit Your Group 
      </a> |
      <a href="http://docs.yahoo.com/info/terms/">
        Yahoo! Groups Terms of Use      </a> |
      <a href="mailto:extremeprogramming-unsubscribe@yahoogroups.com?subject=">
        Unsubscribe      </a> 
    </div>     <!-- |**|end egp html banner|**| -->
  </div> <!-- ygrp-msg -->

  
  <!-- Sponsor -->
  <!-- |**|begin egp html banner|**| -->
  <div id="ygrp-sponsor" style="width:140px;float: left; clear: none; margin-left: \
5px; background:white; margin-bottom:25px ;position:absolute; top:0; right: 0;">  \
<!-- Network content -->  
    <!-- Start vitality -->
    <div id="ygrp-vital">
              <div id="vithd">Recent Activity</div>
        <ul style="list-style-type:none; padding: 0; margin: 2px 0;">
                <li style="clear: both;">
      <div class="ct" style="float: right;"><span \
style="display:none">&nbsp;</span>32</div>  <div class="cat"><a \
href="http://groups.yahoo.com/group/extremeprogramming/members;_ylc=X3oDMTJmbzVoOXR1BF \
9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzEyMDE1NTkxMTc-">New \
Members</a></div>  </li>
  
            
            
            
            
            
        </ul>
            <a href="http://groups.yahoo.com/group/extremeprogramming;_ylc=X3oDMTJlb2l \
zZzY2BF9TAzk3MzU5NzE0BGdycElkAzE1MDU0MDkEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTIwMTU1OTExNw--">
  Visit Your Group      </a>
    </div> 
              
    <!-- Network content -->
              <div id="nc">
              <div class="ad">
                      <div id="hd1">Yahoo! Finance</div> 
<p><a href="http://us.ard.yahoo.com/SIG=13o34jr62/M=493064.12016257.12445664.8674578/D \
=groups/S=1707276718:NC/Y=YAHOO/EXP=1201566317/L=/B=CXyIANFJq24-/J=1201559117501388/A= \
4507179/R=0/SIG=12de4rskk/*http://us.rd.yahoo.com/evt=50284/*http://finance.yahoo.com/personal-finance">It's \
Now Personal</a></p>  <p>Guides, news,</p> 
<p>advice & more.</p>                   </div>
                    <div class="ad">
                      <div id="hd1">New web site?</div> 
<p><a href="http://us.ard.yahoo.com/SIG=13o3mujfh/M=493064.12016308.12445700.8674578/D \
=groups/S=1707276718:NC/Y=YAHOO/EXP=1201566317/L=/B=CnyIANFJq24-/J=1201559117501388/A= \
3848642/R=0/SIG=131eshi2t/*http://searchmarketing.yahoo.com/arp/srchv2.php?o=US2004&cmp=Yahoo&ctv=Groups3&s=Y&s2=&s3=&b=50">Drive \
traffic now.</a></p>  <p>Get your business</p> 
<p>on Yahoo! search.</p>                  </div>
                    <div class="ad">
                      <div id="hd1">Home Improvement</div> 
<p><a href="http://us.ard.yahoo.com/SIG=13otjp4pe/M=493064.12117566.12537396.8674578/D \
=groups/S=1707276718:NC/Y=YAHOO/EXP=1201566317/L=/B=C3yIANFJq24-/J=1201559117501388/A=5170410/R=0/SIG=11b8eimic/*http://new.groups.yahoo.com/craftsmanhome">on \
Yahoo! Groups</a></p>  <p>Find tips &amp; tricks</p> 
<p>for doing it yourself.</p>                  </div>
          </div>
    
  </div>   <!-- |**|end egp html banner|**| -->
  <div style="clear:both; color: #FFF; font-size:1px;">.</div>
</div>   <img src="http://geo.yahoo.com/serv?s=97359714/grpId=1505409/grpspId=1707276718/msgId=138433/stime=1201559117/nc1=4507179/nc2=3848642/nc3=5170410" \
width="1" height="1"> <br>

<span  style="color: white;">__,_._,___</span>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</body>
<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
<style type="text/css">
<!--
#ygrp-mkp{
  border: 1px solid #d8d8d8;
  font-family: Arial;
  margin: 14px 0px;
  padding: 0px 14px;
}
#ygrp-mkp hr{
  border: 1px solid #d8d8d8;
}
#ygrp-mkp #hd{
  color: #628c2a;
  font-size: 85%;
  font-weight: bold;
  line-height: 122%;
  margin: 10px 0px;
}
#ygrp-mkp #ads{
  margin-bottom: 10px;
}
#ygrp-mkp .ad{
  padding: 0 0;
}
#ygrp-mkp .ad a{
  color: #0000ff;
  text-decoration: none;
}
-->
</style>
</head>
<head>
<style type="text/css">
<!--
#ygrp-sponsor #ygrp-lc{
  font-family: Arial;
}
#ygrp-sponsor #ygrp-lc #hd{
  margin: 10px 0px;
  font-weight: bold;
  font-size: 78%;
  line-height: 122%;
}
#ygrp-sponsor #ygrp-lc .ad{
  margin-bottom: 10px;
  padding: 0 0;
}
-->
</style>
</head>
<head>
<style type="text/css">
<!--
#ygrp-mlmsg {font-size:13px; font-family: \
arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;} #ygrp-mlmsg table \
{font-size:inherit;font:100%;} #ygrp-mlmsg select, input, textarea {font:99% \
arial,helvetica,clean,sans-serif;} #ygrp-mlmsg pre, code {font:115% \
monospace;*font-size:100%;} #ygrp-mlmsg * {line-height:1.22em;}
#ygrp-text{
    font-family: Georgia;	
}
#ygrp-text p{
    margin: 0 0 1em 0;
}
#ygrp-tpmsgs{
    font-family: Arial;	
    clear: both;
}
#ygrp-vitnav{
	padding-top: 10px;
	font-family: Verdana;
	font-size: 77%;
	margin: 0;
}
#ygrp-vitnav a{
	padding: 0 1px;
}
#ygrp-actbar{
	clear: both;
	margin: 25px 0;
	white-space:nowrap;
	color: #666;
	text-align: right;
}
#ygrp-actbar .left{
	float: left;
	white-space:nowrap;
}
.bld{font-weight:bold;}
#ygrp-grft{
	font-family: Verdana;
	font-size: 77%;
	padding: 15px 0;
}
#ygrp-ft{
  font-family: verdana;
  font-size: 77%;
  border-top: 1px solid #666; 
  padding: 5px 0; 
}
#ygrp-mlmsg #logo{
  padding-bottom: 10px;
}

#ygrp-vital{
	background-color: #e0ecee;
	margin-bottom: 20px;
	padding: 2px 0 8px 8px;
}
#ygrp-vital #vithd{
	font-size: 77%;
	font-family: Verdana;
	font-weight: bold;
	color: #333;
	text-transform: uppercase;
}
#ygrp-vital ul{
	padding: 0;
	margin: 2px 0;
}
#ygrp-vital ul li{
  list-style-type: none;
  clear: both;
  border: 1px solid #e0ecee;  
}
#ygrp-vital ul li .ct{
  font-weight: bold;
  color: #ff7900;
  float: right;
  width: 2em;
  text-align:right;
  padding-right: .5em;
}
#ygrp-vital ul li .cat{
  font-weight: bold;
}
#ygrp-vital a{
	text-decoration: none;
}

#ygrp-vital a:hover{
  text-decoration: underline;
}

#ygrp-sponsor #hd{
	color: #999;
	font-size: 77%;
}
#ygrp-sponsor #ov{
	padding: 6px 13px;
	background-color: #e0ecee;
	margin-bottom: 20px;
}
#ygrp-sponsor #ov ul{
	padding: 0 0 0 8px;
	margin: 0;
}
#ygrp-sponsor #ov li{
	list-style-type: square;
	padding: 6px 0;
	font-size: 77%;
}
#ygrp-sponsor #ov li a{
	text-decoration: none;
	font-size: 130%;
}
#ygrp-sponsor #nc{
  background-color: #eee;
  margin-bottom: 20px;
  padding: 0 8px;
}
#ygrp-sponsor .ad{
	padding: 8px 0;
}
#ygrp-sponsor .ad #hd1{
	font-family: Arial;
	font-weight: bold;
	color: #628c2a;
	font-size: 100%;
	line-height: 122%;
}
#ygrp-sponsor .ad a{
	text-decoration: none;
}
#ygrp-sponsor .ad a:hover{
	text-decoration: underline;
}
#ygrp-sponsor .ad p{
	margin: 0;
}
o{font-size: 0; }
.MsoNormal{
   margin: 0 0 0 0;
}
#ygrp-text tt{
  font-size: 120%;
}
blockquote{margin: 0 0 0 4px;}
.replbq{margin:4}
-->
</style>
</head>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</html><!--End group email -->



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic