<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Not this... &#187; oscon</title>
	<atom:link href="http://blog.timbunce.org/tag/oscon/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.timbunce.org</link>
	<description>Listen. Reflect. Explore. Solve.</description>
	<lastBuildDate>Thu, 29 Jul 2010 00:00:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.timbunce.org' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/eb188a9f7199a98e44133dc454d3873b?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>Not this... &#187; oscon</title>
		<link>http://blog.timbunce.org</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.timbunce.org/osd.xml" title="Not this..." />
	<atom:link rel='hub' href='http://blog.timbunce.org/?pushpress=hub'/>
		<item>
		<title>NYTProf v3 &#8211; a sneak peak</title>
		<link>http://blog.timbunce.org/2009/08/07/nytprof-v3-a-sneak-peak/</link>
		<comments>http://blog.timbunce.org/2009/08/07/nytprof-v3-a-sneak-peak/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 02:12:49 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[slideshare]]></category>
		<category><![CDATA[nytprof]]></category>
		<category><![CDATA[oscon]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=301</guid>
		<description><![CDATA[I&#8217;ve had a great week at OSCON. The talks are excellent but the real value is in the relationships formed and renewed in the &#8220;hallway track&#8221;. I&#8217;m honoured and humbled to be able to call many great people my friends. My talk on Devel::NYTProf seemed to go well. This year I covered not just NYTProf [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&blog=2562816&post=301&subd=timbunce&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a great week at OSCON. The talks are excellent but the real value is in the relationships formed and renewed in the &#8220;hallway track&#8221;. I&#8217;m honoured and humbled to be able to call many great people my friends.</p>
<p>My <a href="http://en.oreilly.com/oscon2009/public/schedule/detail/7941">talk on Devel::NYTProf</a> seemed to go well. This year I covered not just NYTProf and the new features in v3 (not yet released) but also added a section on how to use NYTProf to optimize your perl code.</p>
<p>Here&#8217;s a quick summary, with links to the slides and screen-cast, and outline what&#8217;s still to be done before v3 gets released (getting closer by the day).<span id="more-301"></span>The first two-thirds of the talk covered general profiling topics and an overview of NYTProf v3. This was an updated and compressed version of the talk I gave last year.</p>
<p>The final third covered optimization techniques.</p>
<p>I began with stern warning against optimization unless there&#8217;s a clear need, followed by a selection of quotes, among which is the well known classic from <a href="http://en.wikipedia.org/wiki/Donald_Knuth">Donald Knuth</a>: &#8220;premature optimization is the root of all evil&#8221;. What few people remember is that that&#8217;s just a fragment of a more balanced statement:</p>
<blockquote><p><em>“We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. <strong>Yet we should not pass up our opportunities in that critical 3%.</strong>”</em></p></blockquote>
<p>After getting an implicit nod from Donald I quoted <a href="http://en.wikipedia.org/wiki/Rob_Pike">Rob Pike</a> on the importance of measurement:</p>
<blockquote><p><em>“Bottlenecks occur in surprising places, so don&#8217;t try to second guess and put in a speed hack until you have </em>proven<em> that&#8217;s where the bottleneck is.”</em></p></blockquote>
<p>Then I outlined the sequence of steps I usually take when performance profiling and optimizing code. These were grouped into three phases: &#8220;Low Hanging Fruit&#8221;, &#8220;Deeper Changes&#8221;, and &#8220;Structural Changes&#8221;.</p>
<p>I&#8217;ve generated a <a href="http://assets.en.oreilly.com/1/event/27/State-of-the-art%20Profiling%20with%20Devel__NYTProf%20Presentation.pdf">PDF of the slides</a> and made it <a href="http://www.slideshare.net/Tim.Bunce/develnytprof-200907">available on slideshare.net</a>. I&#8217;ve also uploaded <a href="http://blip.tv/file/2396942">the 45 minute screencast</a> to <a href="http://timbunce.blip.tv/">my blip.tv channel</a>.</p>
<p>Let me know if you find them useful.</p>
<hr />
p.s. This was originally a large post highlighting features of NYTProf v3. I hate talking about vapourware and with every day that passes the code is getting closer to being ready. In the end I decided to split the post in two. The shiny goodness in v3 will get its own blog post when it&#8217;s released. Meanwhile the slides and screencast will give you a sneak peek.</p>
<br />Posted in perl Tagged: conference, nytprof, oscon, presentation, slideshare, video <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/301/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&blog=2562816&post=301&subd=timbunce&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2009/08/07/nytprof-v3-a-sneak-peak/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>
	</item>
		<item>
		<title>Has NYTProf helped you? Tell me how&#8230;</title>
		<link>http://blog.timbunce.org/2009/06/05/has-nytprof-helped-you-tell-me-how/</link>
		<comments>http://blog.timbunce.org/2009/06/05/has-nytprof-helped-you-tell-me-how/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 21:24:06 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[nytprof]]></category>
		<category><![CDATA[oscon]]></category>
		<category><![CDATA[oscon2009]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=278</guid>
		<description><![CDATA[At OSCON this year1 I&#8217;m giving a &#8220;State-of-the-art Profiling with Devel::NYTProf&#8221; talk. It&#8217;ll be an update of the one I gave last year, including coverage of new features added since then (including, hopefully, two significant new features that are in development). This year I&#8217;d like to spend some time talking about how interpret the raw [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&blog=2562816&post=278&subd=timbunce&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>At OSCON this year<sup><a href="#1">1</a></sup> I&#8217;m giving a &#8220;State-of-the-art Profiling with Devel::NYTProf&#8221; <a href="http://en.oreilly.com/oscon2009/public/schedule/detail/7941">talk</a>. It&#8217;ll be an update of the one I gave last year, including coverage of new features added since then (including, hopefully, two significant new features that are in development).</p>
<p>This year I&#8217;d like to spend some time talking about how interpret the raw information and using it to guide code changes. Approaches like common sub-expression elimination and moving invariant code out of loops are straight-forward. They&#8217;re &#8216;low hanging fruit&#8217; with no API changes involved. Good for a first-pass through the code.</p>
<p>Moving loops down into lower-level code is an example of a deeper change I&#8217;ve found useful. There are many more. I&#8217;d like to collect them to add to the talk and the NYTProf documentation.</p>
<p>So here&#8217;s a question for you: after looking at the NYTProf report, how did <em>you</em> identify what you needed to do to <em>fix</em> the problems?</p>
<p>I&#8217;m interested in your experiences. How you used NYTProf, how you interpreted the raw information NYTProf presented, and then, critically, how you decided what code changes to make to improve performance. What worked, what didn&#8217;t. The practice, not the theory. </p>
<p>Could you to take a moment to think back over the times you&#8217;ve used NYTProf, the testing strategy you&#8217;ve used, and the code changes you&#8217;ve made as a result? Ideally go back and review the diffs and commit comments.</p>
<p>Then send me an email &#8212; <em>tell me your story</em>!</p>
<p>The more detail the better! Ideally with actual code (or pseudo-code) snippets<sup><a href="#2">2</a></sup>.</p>
<hr />
<ol>
<li><a name="1"></a>OSCON is in San Jose this year, July 20-24th. You can use the code &#8216;os09fos&#8217; to get a 20% discount.
</li>
<li><a name="2"></a>Annotated diff&#8217;s would be greatly appreciated. I&#8217;ll give credit for any examples used, naturally, and I&#8217;ll happily anonymize any code snippets that aren&#8217;t open source.
</li>
</ol>
<br />Posted in perl Tagged: nytprof, oscon, oscon2009, perl <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/278/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&blog=2562816&post=278&subd=timbunce&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2009/06/05/has-nytprof-helped-you-tell-me-how/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>
	</item>
	</channel>
</rss>