<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx</link><description>The accepted wisdom regarding performance of try / catch | finally in C# has normally been: try has no performance side-effects unless an exception is thrown. A discussion I was involved in recently caused me to discover some performance implications</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1726278</link><pubDate>Thu, 24 Sep 2009 13:52:44 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1726278</guid><dc:creator>PeterRitchie</dc:creator><description>&lt;p&gt;@bmm60: &amp;nbsp;The point of the article *is* to show that using try/catch does impact performance. &amp;nbsp;What you take out of the post, is up to you. &amp;nbsp;How, otherwise, would you show that try/catch does affect performance if you don&amp;#39;t show the analysis of two different snippets of code--that differ only by the addition of a try/catch? &amp;nbsp;&lt;/p&gt;
&lt;p&gt;It&amp;#39;s true that the second can&amp;#39;t be optimized the same as the first; but that&amp;#39;s because of the added try/catch (or try/finally in C#).&lt;/p&gt;
&lt;p&gt;Changing the code to what Norman suggests (i.e. comparing linear code to looping code with a try/catch) most certainly would be comparing apples to oranges. &amp;nbsp;It would then be the very post you&amp;#39;re saying it already is. &amp;nbsp;It wouldn&amp;#39;t tell you anything--you couldn&amp;#39;t see the difference in optimizations of the same code with and without a container try/catch.&lt;/p&gt;
&lt;p&gt;The code *could* use a catch block and push the WriteLine outside the try/catch; but, it would show the same thing without adding any clarity, IMO.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1726278" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1726160</link><pubDate>Thu, 24 Sep 2009 05:00:50 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1726160</guid><dc:creator>bmm6o</dc:creator><description>&lt;p&gt;&amp;gt; The point of the post is to dispel the conventional wisdom that using try/catch does not impact performance; this shows that it does.&lt;/p&gt;
&lt;p&gt;I disagree. &amp;nbsp;This article shows that changing the requirements of a program can result in an implementation that has different performance characteristics. &amp;nbsp;Moving the WriteLine to the finally block means you&amp;#39;re comparing apples to oranges; the programs aren&amp;#39;t interchangeable implementations of the same spec, one using try/finally and the other not, they implement different specifications.&lt;/p&gt;
&lt;p&gt;I mean, it&amp;#39;s true that the second program can&amp;#39;t be optimized in the same way that the first one can. &amp;nbsp;I think it&amp;#39;s invalid to draw general conclusions about that from this example. &amp;nbsp;What if you rewrite it in the style Norman suggests?&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1726160" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1725641</link><pubDate>Tue, 22 Sep 2009 05:39:24 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1725641</guid><dc:creator>Chuck</dc:creator><description>&lt;p&gt;Thanks for appropriately reading thru the typos in my post :)&lt;/p&gt;
&lt;p&gt;On further review, I see all that should&amp;#39;ve been clear, but I thank you also for accommodating me in my paraphrase of your point.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1725641" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1725225</link><pubDate>Sun, 20 Sep 2009 17:14:35 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1725225</guid><dc:creator>PeterRitchie</dc:creator><description>&lt;p&gt;@Chuck. &amp;nbsp;That&amp;#39;s the point; the mere introduction of a try block now means there are three explicit potential outcomes. &amp;nbsp;Previously they where only implicit and could be optimized away because they were implicit. &amp;nbsp;The only difference between the two snippets of code is the try/catch. &amp;nbsp;Thus, &amp;quot;using try/catch does not affect performance&amp;quot; is not true (the point of the post).&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1725225" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1725224</link><pubDate>Sun, 20 Sep 2009 17:12:04 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1725224</guid><dc:creator>PeterRitchie</dc:creator><description>&lt;p&gt;@foobar,that&amp;#39;s kind of the point. &amp;nbsp;How do you show how using try/catch affects performance if you don&amp;#39;t have &amp;quot;two programs&amp;quot;?&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1725224" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1725080</link><pubDate>Sat, 19 Sep 2009 23:28:32 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1725080</guid><dc:creator>Chuck</dc:creator><description>&lt;p&gt;If I can summarize, I think the criticisms between your non-try code and your try-blocked code is that they&amp;#39;re not really functional equivalents. &amp;nbsp;I&amp;#39;m a linguist, not a computer-scientists so I apologize if the jargon is off -- but in the non-try code, the value of the variable inside WriteLine is always 3 regardless of what happens with the other functions being called.&lt;/p&gt;
&lt;p&gt;The JIT-compiled code is -- absolutely and of course -- different between the two because the try-blocked code has not one but THREE potential outcomes:&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;int count = 1;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;try&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SomeMethod(); &amp;nbsp;## Raise exception here count=1&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;count++;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SomeOtherMethod(); ## Raise exception here count=3&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;count++;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt;The functionally-equivalent code, then, is not something that runs two functions and makes count == 3, but rather, the possibility of a raised exception means that there are two implicit conditionals within the try block where there are not within the non-try-block&amp;#39;d code.&lt;/p&gt;
&lt;p&gt;So in order to instantiate the conditionals implied within the try block due to the raised exception, you&amp;#39;d have to do something like:&lt;/p&gt;
&lt;p&gt;int count = 1;&lt;/p&gt;
&lt;p&gt;if someMethod(){&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;count++&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;if someOtherMethod(){&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;count++}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt;Console.WriteLine(count);&lt;/p&gt;
&lt;p&gt;I guess I&amp;#39;d be curious to know: is there a performance difference between THAT and the try-finally code?&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1725080" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1725060</link><pubDate>Sat, 19 Sep 2009 20:54:36 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1725060</guid><dc:creator>foobar</dc:creator><description>&lt;p&gt;@Peter &amp;nbsp;The examples are two different programs. &amp;nbsp;They have different outputs depending on when an exception is thrown. &amp;nbsp;They are not the same and thus the optimizations are not the same. &amp;nbsp;If you wanted to point out that similar programs with different output might have different runtime performance, then keep the article. &amp;nbsp;But, it does not prove anything about the lack of optimizations in a try/catch/finally block. &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1725060" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1725052</link><pubDate>Sat, 19 Sep 2009 19:50:54 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1725052</guid><dc:creator>PeterRitchie</dc:creator><description>&lt;p&gt;@Jonathan Allen: &amp;nbsp; In what way do you think this is nonsense?&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1725052" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1725051</link><pubDate>Sat, 19 Sep 2009 19:50:32 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1725051</guid><dc:creator>PeterRitchie</dc:creator><description>&lt;p&gt;@d * @bmm60 &amp;nbsp;Exactly, we don&amp;#39;t want it to optimise this code. &amp;nbsp;The point of the post is to dispel the conventional wisdom that using try/catch does not impact performance; this shows that it does.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1725051" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1725045</link><pubDate>Sat, 19 Sep 2009 18:11:30 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1725045</guid><dc:creator>Jonathan Allen</dc:creator><description>&lt;p&gt;Um, you really should consider removing this post. It would be bad enough if a newbie spouted off such nonsense, but as a MVP it is just disgraceful.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1725045" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1724986</link><pubDate>Sat, 19 Sep 2009 15:29:05 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1724986</guid><dc:creator>D</dc:creator><description>&lt;p&gt;Do we want this code optimised, though? The coding suggests that if SomeMethod fails, we want count == 2, and if SomeOtherMethod fails, we want count == 3.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1724986" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1724984</link><pubDate>Sat, 19 Sep 2009 15:12:18 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1724984</guid><dc:creator>bmm6o</dc:creator><description>&lt;p&gt;It&amp;#39;s not just that the jitter doesn&amp;#39;t optimize away the count variable entirely, it would be illegal to. &amp;nbsp;It&amp;#39;s possible for the output of the second program to be &amp;quot;1&amp;quot;, &amp;quot;2&amp;quot; or &amp;quot;3&amp;quot;, depending on which (if any) function calls throw an exception. &amp;nbsp;This makes it a fundamentally different program from the first (which will output &amp;quot;3&amp;quot; when it outputs anything). &amp;nbsp;The moral of the story isn&amp;#39;t that you should be wary of losing optimization opportunities, it&amp;#39;s that you should understand what try/finally does and use it properly.&lt;/p&gt;
&lt;p&gt;It would be interesting if there were other *legal* optimizations that aren&amp;#39;t made, but your example doesn&amp;#39;t show this.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1724984" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1682092</link><pubDate>Fri, 27 Mar 2009 15:02:34 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1682092</guid><dc:creator>PeterRitchie</dc:creator><description>&lt;p&gt;@Eugen. &amp;nbsp;I prefer returning null for &amp;quot;search-like&amp;quot; method. &amp;nbsp;I would to performance tests specifically in your circumstance; but my tests show that throwing/catching an exception over returning null is only about 5% slower. &amp;nbsp;If you don&amp;#39;t plan on throwing many exceptions, the difference is essentially negligible.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1682092" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1681791</link><pubDate>Thu, 26 Mar 2009 23:23:03 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1681791</guid><dc:creator>Eugen</dc:creator><description>&lt;p&gt;In a business layer where we are searching for records is there much of a performace hit to throw a custom exception like ProductNotonFileException instead of null for example.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1681791" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1651820</link><pubDate>Fri, 24 Oct 2008 03:43:23 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1651820</guid><dc:creator>Esteban Araya</dc:creator><description>&lt;p&gt;Peter,&lt;/p&gt;
&lt;p&gt;Thanks for helping me understand one of the often ignored costs of throwing exceptions. I think too often we ignore the fact that what we write and the bytecode are not exactly the same thing.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1651820" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1649596</link><pubDate>Fri, 03 Oct 2008 14:05:14 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1649596</guid><dc:creator>PeterRitchie</dc:creator><description>&lt;p&gt;@Norman. &amp;nbsp;Yes, due to various guarantees it has to disable *some* optimizations in the try block.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;try&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt; i = 1;&lt;/p&gt;
&lt;p&gt; i = 2;&lt;/p&gt;
&lt;p&gt; methodThatMightThrow();&lt;/p&gt;
&lt;p&gt; i = 3;&lt;/p&gt;
&lt;p&gt; Trace.WriteLine(i);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;catch(Exception)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;Trace.WriteLine(i);&lt;/p&gt;
&lt;p&gt;The compiler/runtime guarantees that the state of i will be 2 when the exception is thrown (and that i will be 1 if an exception occurs before setting it to 2--remember there are asynchronous exceptions). &amp;nbsp;Normal optimizations would think that i only ever really needs to be 3 and would optimize as such.&lt;/p&gt;
&lt;p&gt;See also &lt;a rel="nofollow" target="_new" href="http://msmvps.com/blogs/peterritchie/archive/2007/07/12/performance-implications-of-try-catch-finally-part-two.aspx"&gt;msmvps.com/.../performance-implications-of-try-catch-finally-part-two.aspx&lt;/a&gt;&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1649596" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1649573</link><pubDate>Fri, 03 Oct 2008 04:45:39 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1649573</guid><dc:creator>Norman Diamond</dc:creator><description>&lt;p&gt;Theoretically the try part of this try statement doesn&amp;#39;t have to disable optimization, but the finally part has to disable (to some extent) optimization of the try part. &amp;nbsp;The reason is that the finally part fetches the value of count.&lt;/p&gt;
&lt;p&gt;As an analogy, suppose you compare two programs, one with trivial uses of count the way your first program did, and the other one with a for loop and a call to some function with count as an argument in that function call. &amp;nbsp;Would you say that the for loop causes the decrease in optimization, or would you say that passing count as an argument causes the decrease in optimization? &lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1649573" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1466712</link><pubDate>Thu, 17 Jan 2008 02:22:52 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1466712</guid><dc:creator>PeterRitchie</dc:creator><description>&lt;p&gt;Yes, lock uses try/catch, it will have the same performance implications.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1466712" width="1" height="1"&gt;</description></item><item><title>re: Performance Implications of try/catch/finally</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1466319</link><pubDate>Wed, 16 Jan 2008 20:00:54 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1466319</guid><dc:creator>Jesse</dc:creator><description>&lt;p&gt;Does this mean that locked code is not optomized? e.g:&lt;/p&gt;
&lt;p&gt;Lock(this)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;SomeMethod();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;count++;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;SomeOtherMethod();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;count++;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;Console.WriteLine(count);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1466319" width="1" height="1"&gt;</description></item><item><title>Exception Logging</title><link>http://msmvps.com/blogs/peterritchie/archive/2007/06/22/performance-implications-of-try-catch-finally.aspx#1081036</link><pubDate>Thu, 02 Aug 2007 02:52:59 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1081036</guid><dc:creator>Peter Ritchie's MVP Blog</dc:creator><description>&lt;p&gt;There is often a requirement for an application to log unhandled (and sometimes &amp;amp;quot;handled&amp;amp;quot;)&lt;/p&gt;
&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1081036" width="1" height="1"&gt;</description></item></channel></rss>