<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.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>IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx</link><description>Hello again, this is Peter Gurevich, Performance PM (among other things) for IE7. We have heard a lot of requests to improve our Jscript engine, especially now that AJAX sites are becoming more prevalent on the web. I want you all to know that we have</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729086</link><pubDate>Tue, 29 Aug 2006 01:47:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729086</guid><dc:creator>Tino Zijdel</dc:creator><description>You CalculateSum() example is hilarious, not only because of the use of document.all that has been deprecated since IE5 and should have been removed completely from IE7 because this backwards-compatibilty still causes global namespace pollution and many quirks, but mainly because a value-attribute from the DOM is always a string so you are not actually adding up 2 values, you are concatenating them.&lt;br&gt;&lt;br&gt;For the rest a lot of this seems like premature optimization to me. Maybe you should mention something about the ultra-slow stringhandling of Microsoft's JScript and the way to overcome that by using arrays and join('') (yes, it's ugly).&lt;br&gt;When will you fix the simple things like substr(-2)?</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729118</link><pubDate>Tue, 29 Aug 2006 02:15:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729118</guid><dc:creator>foobar</dc:creator><description>I find Tino's comments hilarious, because he totally missed the point of the article.</description></item><item><title>Performance</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729125</link><pubDate>Tue, 29 Aug 2006 02:18:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729125</guid><dc:creator>Dave Massy's WebLog</dc:creator><description>For those asking about IE7 performance improvements there is the first of a set of blog posts covering...</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729147</link><pubDate>Tue, 29 Aug 2006 02:42:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729147</guid><dc:creator>blur</dc:creator><description>would be nice to see support for Javascript 1.7</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729156</link><pubDate>Tue, 29 Aug 2006 03:01:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729156</guid><dc:creator>Justin Rogers</dc:creator><description>Tino's comments aren't bad at all. My example was slightly contrived and does require a specialized control in order to work properly. If you wanted it to work with the default value property on a standard DOM element you'd need to do some conversion. The focus of the article was specifically on the things you could do to improve performance, not really ensure that each code sample stood on it's own right. In fact, we've found most people already have plenty of their own samples that they can apply these changes to for immediate performance wins.&lt;br&gt;&lt;br&gt;Since I'm on the IE team, I can't really comment on &amp;quot;features&amp;quot; of the JScript language directly. In fact, most of the goodness above is about how JScript works, but is also very much applicable to how the IE DOM is constructed and how we interact with the JScript engine. I'd like to keep any postings we do on the topic of improving the link between the two components and not on the internal specifics of components I don't work on. If you have problems with IE on the other hand, we may be able to help out. So feel free to ask any JScript+IE integration questions or maybe just about IE performance issues you've had.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729177</link><pubDate>Tue, 29 Aug 2006 03:15:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729177</guid><dc:creator>Mark Wubben</dc:creator><description>The problem with these examples is that they lead to unnecessary code obfuscation. As Tino noted, stay away from premature optimalization.&lt;br&gt;&lt;br&gt;If I remember correctly one thing that slows JScript down is it's garbage collection: if you have a lot of objects it'll check them all, everytime, even if they stay in existance for a long time. It would be more efficient to decrease the checking of long-existing objects.&lt;br&gt;&lt;br&gt;I'm also interested in how you are solving the memory leaks. Do you know about &lt;a rel="nofollow" target="_new" href="http://novemberborn.net/javascript/edgvl"&gt;http://novemberborn.net/javascript/edgvl&lt;/a&gt; ?</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729184</link><pubDate>Tue, 29 Aug 2006 03:21:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729184</guid><dc:creator>cooperpx</dc:creator><description>yes, yes, yes! more plz! ;)</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729201</link><pubDate>Tue, 29 Aug 2006 03:40:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729201</guid><dc:creator>Dark Phoenix</dc:creator><description>Script optimization is always a good thing (though Tino's right, use of document.all should be avoided if possible).&lt;br&gt;&lt;br&gt;I noticed that there isn't any word about the W3C Event Model, but I assume that's because in order to implement it, IE's entire event model would have to be rewritten (seeing as IE starts on the target element and bubbles the event upwards by default).</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729204</link><pubDate>Tue, 29 Aug 2006 03:43:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729204</guid><dc:creator>William J Edney</dc:creator><description>Justin -&lt;br&gt;&lt;br&gt;Please pass along my thanks and 'excellent work' on the new version of JScript. We are doing heavy, heavy AJAX and have noticed significant speedups (not quite as fast as Mozilla on 'large working sets' but much, much faster than JScript 5.6).&lt;br&gt;&lt;br&gt;Speaking of which, the new JScript 5.7 .dll seems to work fine when installed in a system using IE6 (and the performance improvements remain). Any chance we'll see this new .dll as part of a 'security patch update' or whatever to IE6?&lt;br&gt;&lt;br&gt;Thanks again!! I owe you guys some major beers :-)&lt;br&gt;&lt;br&gt;Cheers,&lt;br&gt;&lt;br&gt;- Bill</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729206</link><pubDate>Tue, 29 Aug 2006 03:44:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729206</guid><dc:creator>William J Edney</dc:creator><description>Ooops - forgot to thank Peter for an excellent article. Looking forward to the next one :-)!&lt;br&gt;&lt;br&gt;Cheers,&lt;br&gt;&lt;br&gt;- Bill</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729266</link><pubDate>Tue, 29 Aug 2006 04:41:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729266</guid><dc:creator>Jeff</dc:creator><description>Installed the new IE7 RC1, after the installation any flash pages have stopped working, even after several installs of flash player the problem persists. </description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729286</link><pubDate>Tue, 29 Aug 2006 04:56:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729286</guid><dc:creator>DaHcn</dc:creator><description>Good article, thanks!</description></item><item><title>Interesting Finds: August 28, 2006</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729318</link><pubDate>Tue, 29 Aug 2006 05:26:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729318</guid><dc:creator>Jason Haley</dc:creator><description /></item><item><title>Interesting Finds: August 28, 2006</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729331</link><pubDate>Tue, 29 Aug 2006 05:36:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729331</guid><dc:creator>Jason Haley</dc:creator><description /></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729552</link><pubDate>Tue, 29 Aug 2006 09:41:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729552</guid><dc:creator>Erik Arvidsson</dc:creator><description>Try the following:&lt;br&gt;&lt;br&gt;var f = document.body.insertBefore;&lt;br&gt;&lt;br&gt;alert(typeof f); // throws exception, should return &amp;quot;function&amp;quot;&lt;br&gt;&lt;br&gt;alert(f instanceof Function); // throws exception, should return true&lt;br&gt;&lt;br&gt;f.apply(document.body, [newChild, oldChild]); // throws as well&lt;br&gt;&lt;br&gt;Yawn... This has been broken since IE4. No wonder IE is the Netscape of today.</description></item><item><title>Developing, Programming, Computer science  &amp;raquo; Blog Archive   &amp;raquo; Optimizing Javascript in Internet Explorer</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729591</link><pubDate>Tue, 29 Aug 2006 10:18:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729591</guid><dc:creator>Developing, Programming, Computer science  » Blog Archive   » Optimizing Javascript in Internet Explorer</dc:creator><description>PingBack from &lt;a rel="nofollow" target="_new" href="http://www.trapanator.com/blog/archives/197"&gt;http://www.trapanator.com/blog/archives/197&lt;/a&gt;</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729695</link><pubDate>Tue, 29 Aug 2006 11:37:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729695</guid><dc:creator>kL</dc:creator><description>Couldn't these performance problems be fixed by adding small lookup cache?&lt;br&gt;</description></item><item><title>IE   JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729698</link><pubDate>Tue, 29 Aug 2006 11:41:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729698</guid><dc:creator>Dude, WTF?!</dc:creator><description /></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729705</link><pubDate>Tue, 29 Aug 2006 11:54:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729705</guid><dc:creator>mikx</dc:creator><description>Great post. Really appreciate. &lt;br&gt;&lt;br&gt;One of the typical examples for performance critical scripts is a client side sortable list - either based on a table or on DIVs - with more than a couple hundred rows and a dozen columns. &lt;br&gt;&lt;br&gt;In intranet applications it is a common task to create a list control looking and behaving as similar as possible to the &amp;quot;real&amp;quot; Windows Forms ListView control - without using Java, ActiveX, .NET or something *g*&lt;br&gt;&lt;br&gt;A post how the fastest script implementation from your point of view could look like would be awesome :)&lt;br&gt;&lt;br&gt;</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729744</link><pubDate>Tue, 29 Aug 2006 12:50:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729744</guid><dc:creator>Dao Gottwald</dc:creator><description>function IterateWorkOverCollection()&lt;br&gt;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;var funcAppendChild = document.getElementById(‘target’).appendChild;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;var length = myCollection.getItemCount();&lt;br&gt; &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;for(var index = 0; index&amp;lt;length; index++)&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;funcAppendChild(myCollection[index]);&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;br&gt;--&amp;gt; looks like a bad idea:&lt;br&gt;&lt;br&gt;&lt;br&gt;function X(){}&lt;br&gt;X.prototype = {foo : 1, getFoo : function() { return this.foo }};&lt;br&gt;var y = new X;&lt;br&gt;&lt;br&gt;y.getFoo();&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 1&lt;br&gt;&lt;br&gt;var z = y.getFoo;&lt;br&gt;z();&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; reference to undefined property this.foo</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729753</link><pubDate>Tue, 29 Aug 2006 12:55:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729753</guid><dc:creator>Andy C</dc:creator><description>Tino/Mark, the bit you seem to have missed is that scripts don't get optimized heavily by a compiler (because there isn't one), so it's important to know how to write performant code when necessary. Sure if you have a tiny bit of rarely called JS, then write for maintainability. If it's doing heavy work though, you need to put in some effort to make it work as well as possible.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729754</link><pubDate>Tue, 29 Aug 2006 12:56:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729754</guid><dc:creator>Dao Gottwald</dc:creator><description>&amp;gt; I noticed that there isn't any word about the W3C Event Model, but I assume that's because in order to implement it, IE's entire event model would have to be rewritten (seeing as IE starts on the target element and bubbles the event upwards by default).&lt;br&gt;&lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://en.design-noir.de/webdev/JS/addEvent/"&gt;http://en.design-noir.de/webdev/JS/addEvent/&lt;/a&gt;</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729786</link><pubDate>Tue, 29 Aug 2006 13:27:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729786</guid><dc:creator>ROBO Design</dc:creator><description>Hello!&lt;br&gt;&lt;br&gt;Actually, interesting post. Looking forward for the other two parts.&lt;br&gt;&lt;br&gt;As for the previous comments, I agree. It's silly to talk about speed optimization when your implementation sucks. It sounds like &amp;quot;guys, look, we have a really good implementation, you - the web developers - have to work with us on this, fix your sites, make them faster, we've done the best we could&amp;quot;.&lt;br&gt;&lt;br&gt;Justin: yes, your examples don't have to be perfect, but please stop spreading bad coding practice.&lt;br&gt;&lt;br&gt;I'll take this problem to another level: if a guy learning web development sees only bad examples all year-long, he'll code as bad as in the examples. I already *know* document.all and similar dirt is, *cough*, just dirt. However, beginners, novices, amateurs can't tell the difference. All of these bad examples go back into the head, you get used to them.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729975</link><pubDate>Tue, 29 Aug 2006 16:31:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729975</guid><dc:creator>rgroth</dc:creator><description>wrong wrong wrong -- all the examples you cited could easily be optimized by the JS interpreter. If the scope hasn't changed there is no reason that the interpreter could not maintained a MRU cache of references per scope. Asking the developer to (a) trade readability for performance and (b) optimize for IE will have unpredictable results on other browsers and make the code harder to refactor later. &amp;nbsp;Why not make the JS engine more intelligent at handling the examples above?</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#729991</link><pubDate>Tue, 29 Aug 2006 16:49:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:729991</guid><dc:creator>Vilx-</dc:creator><description>Some time ago I had to optimize some heavily inefficient JavaScripts/DHTML's. To find out, what exactly was slowing things down, I ran a series &amp;nbsp;of tests on different aspects of IE's JS. What I found out was, that most everything works very very quickly, until it has to start performing lookups within DOM. For example, one of the slowest things was getElementById (and similar element-finding functions). Try making a page with 6000 checkboxes and then obtaining a reference to each of them. ;) IE's lookup times seem to be growing linearly with the increase of the elements. As if it was running through ALL of them instead of a binary search. Other browsers do that better. ;) A solution to this is to cache the reference once you have it - then everything works quickly.&lt;br&gt;&lt;br&gt;Another nice thing would be if it would be possible to temporarily &amp;quot;turn off&amp;quot; rendering engine while performing some layout changes. For instance, I had to set up dynamically some &amp;gt;100 little &amp;quot;bars&amp;quot; inside a complex HTML when the page loaded. Each time I changed some property (width, position) of each bar, IE seemed to recalculate the whole page. Eventually I found out that if I positioned them absolutely, IE did it much faster, because they did not affect the rest of the page's layout. Still - seems like a workaround to me.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#730027</link><pubDate>Tue, 29 Aug 2006 17:19:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:730027</guid><dc:creator>Grant</dc:creator><description>&amp;gt; var f = document.body.insertBefore;&lt;br&gt;&amp;gt; alert(typeof f); // throws exception, should return &amp;quot;function&amp;quot;&lt;br&gt;&lt;br&gt;Alerts 'object' in IE 6.0.2900.2180.xpsp_sp2_gdr.050301-1519 w/ jscript.dll version 5.6.0.8831&lt;br&gt;&lt;br&gt;IE has always returned 'object' for 'typeof' on DOM methods. And since methods on DOM objects are not defined by ECMA-262, but instead are DOM implementation specific, they can be 'typeof' anything the implementation requires.&lt;br&gt;&lt;br&gt;However, my point is, alert(typeof document.body.insertBefore) does not &amp;quot;throw an exception&amp;quot; as described above, so the case of typeof x == 'object' can be caught and handled without a try/catch block.&lt;br&gt;&lt;br&gt;&amp;gt; alert(f instanceof Function); // throws exception, should return true&lt;br&gt;&lt;br&gt;Does not throw an exception in IE 6.0.2900.2180.xpsp_sp2_gdr.050301-1519 w/ jscript.dll version 5.6.0.8831, it alerts 'false', so again, this case can be caught and handled programmatically.&lt;br&gt;&lt;br&gt;&amp;gt; f.apply(document.body, [newChild, oldChild]); // throws as well&lt;br&gt;&lt;br&gt;This does generate an &amp;quot;Object doesn't support this property or method&amp;quot; error because 'f' isn't a Function, and does not have an apply method. However, because you can test whether 'f' has an apply method prior to using it, you can also avoid generating an error here.&lt;br&gt;&lt;br&gt;&amp;gt; Yawn... This has been broken since IE4.&lt;br&gt;&amp;gt; No wonder IE is the Netscape of today.&lt;br&gt;&lt;br&gt;Broken? Where is the specification for what a web browser DOM object's methods should return for 'typeof'?&lt;br&gt;&lt;br&gt;Oh, that's right, the web browser DOM isn't part of the ECMA-262 specification, so it can behave however the implementation chooses to have it behave.&lt;br&gt;&lt;br&gt;Anyway, this can be fixed pretty easily:&lt;br&gt;&lt;br&gt;var f = document.body.insertBefore;&lt;br&gt;if (typeof f == 'object') {&lt;br&gt; &amp;nbsp; &amp;nbsp;f = new Function('x', 'y', 'document.body.insertBefore(x,y)');&lt;br&gt;}&lt;br&gt;alert(typeof f); // alerts 'function'&lt;br&gt;alert(f instanceof Function); // alerts 'true'&lt;br&gt;f.apply(document.body, [newChild, oldChild]); // works fine</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#730039</link><pubDate>Tue, 29 Aug 2006 17:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:730039</guid><dc:creator>Aedrin</dc:creator><description>I wonder how many of these &amp;quot;complainers&amp;quot; even know what IE's code looks like.&lt;br&gt;&lt;br&gt;A large product like this isn't simply a &amp;quot;just add this feature and everyone will be happy&amp;quot;.&lt;br&gt;&lt;br&gt;There is a lot more to it. Firefox/Etc. have an unfair advantage in that they used an already working rendering engine, all they had to do was stick on a user interface that people would like.&lt;br&gt;&lt;br&gt;IE has been around longer than that and thus inherits its past in new versions.&lt;br&gt;&lt;br&gt;A rewrite would be lunatic, and they can't discard the product. It is part of everything.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#730060</link><pubDate>Tue, 29 Aug 2006 17:43:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:730060</guid><dc:creator>Dave</dc:creator><description>&amp;gt; Anyway, this can be fixed pretty easily: &lt;br&gt;&amp;gt; var f = document.body.insertBefore; &lt;br&gt;&amp;gt; if (typeof f == 'object') { &lt;br&gt;&amp;gt; &amp;nbsp; f = new Function('x', 'y', 'document.body.insertBefore(x,y)'); &lt;br&gt;&amp;gt;} &lt;br&gt;&lt;br&gt;Sure, you can wrap every &amp;quot;IE function&amp;quot; (to use Peter/Justin's nomenclature) in a real ECMA function object. That way the DOM methods and others like XMLHttpRequest will behave normally and have all the features like a prototype and constructor. It already works that way in Firefox and Opera, so you would only need to take the performance hit of wrapping everything for IE. Unfortunately, the methods are attached to each DOM element. I can't think of an easily reusable way to handle this IE quirkaround, it would have to be sprinkled everywhere you needed a real function from a DOM function. Anyone else have a better idea?&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#730116</link><pubDate>Tue, 29 Aug 2006 18:37:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:730116</guid><dc:creator>Andrew Eberhard</dc:creator><description>I've been doing heavy-duty AJAX applications (tens of thousands of lines of client side JScript code) in IE for over six years now and I have to say that IE JScript performance has steadily improved over those years. &amp;nbsp;The suggestions mentioned here are known to me (except the function caching...thanks!), and I can say they really do make a huge difference particularly where lengthy iterations are concerned.&lt;br&gt;&lt;br&gt;I'd really like to see Part II cover two additional topics (one of which was discussed above):&lt;br&gt;&lt;br&gt;1. &amp;nbsp;String concatenations: &amp;nbsp;slow, fast, and ugly; a HOW TO. &amp;nbsp;This should certainly include discussions of array.join(&amp;quot;&amp;quot;) as suggested above.&lt;br&gt;&lt;br&gt;2. &amp;nbsp;innerHTML vs. the DOM. &amp;nbsp;I recall reading an MSDN article ages ago that suggested that when building a select tag with lots of options dynamically it was actually faster to replace the entire tag via the innerHTML of its parent than it was to iterate through the select tags options collection adding options one at a time. &amp;nbsp;This remains fantastic advice to this day (the more options in the select tag the better). &amp;nbsp;Any other such tips surrounding innerHTML vs. the DOM?&lt;br&gt;&lt;br&gt;3. &amp;nbsp;Dare I even ask: &amp;nbsp;how browser specific are your suggestions? &amp;nbsp;In my experience, Safari handles string concatenations much better than IE, and its array.join(&amp;quot;&amp;quot;) method is much slow making that hack a very IE specific tuning mechanism. &amp;nbsp;Any thoughts?&lt;br&gt;&lt;br&gt;Eagerly looking forward to Part II.&lt;br&gt;&lt;br&gt;Thanks!</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#730167</link><pubDate>Tue, 29 Aug 2006 19:05:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:730167</guid><dc:creator>Steve</dc:creator><description>Good information, Peter. Looking forward to the next installment.</description></item><item><title>Recomendaciones de performance en Javascript &amp;laquo; Blog de notas</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#730299</link><pubDate>Tue, 29 Aug 2006 20:34:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:730299</guid><dc:creator>Recomendaciones de performance en Javascript « Blog de notas</dc:creator><description>PingBack from &lt;a rel="nofollow" target="_new" href="http://javis.wordpress.com/2006/08/29/recomendaciones-de-performance-en-javascript/"&gt;http://javis.wordpress.com/2006/08/29/recomendaciones-de-performance-en-javascript/&lt;/a&gt;</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#730339</link><pubDate>Tue, 29 Aug 2006 21:02:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:730339</guid><dc:creator>Erik Arvidsson</dc:creator><description>Grant: You are right that typeof document.appendChild == &amp;quot;object&amp;quot; in IE6 but it is not an instance of Object (sigh). I got the exception in IE7rc1 when writing code in the address bar which is most likely just a UI bug.&lt;br&gt;&lt;br&gt;It is also true that the W3C DOM does not enforce you to use real objects and methods. But it is encouraged to use the native language constructs where they fit and this is an obvious case.&lt;br&gt;&lt;br&gt;Let me make an example of how bad this is. Let's say that the .NET implementation of the W3C DOM API was done in the way it is exposed to JScript. It would prevent people to use reflection (because methods are not methods and properties are not properties and interfaces are not interfaces) and you would not be able to put DOM nodes in a hash table that expects Object (because DOM nodes are not Objects).&lt;br&gt;&lt;br&gt;To sum it up. This is ridiculous.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#730396</link><pubDate>Tue, 29 Aug 2006 21:35:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:730396</guid><dc:creator>cagrET</dc:creator><description>&amp;gt;function IterateWorkOverCollection()&lt;br&gt;&amp;gt;{&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; var funcAppendChild = document.getElementById(‘target’).appendChild;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; var length = myCollection.getItemCount();&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; for(var index = 0; index&amp;lt;length; index++)&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; {&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;gt;funcAppendChild(myCollection[index]);&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }&lt;br&gt;&amp;gt;}&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;--&amp;gt; looks like a bad idea:&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;function X(){}&lt;br&gt;&amp;gt;X.prototype = {foo : 1, getFoo : function() { &amp;gt;return this.foo }};&lt;br&gt;&amp;gt;var y = new X;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;y.getFoo();&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 1&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;var z = y.getFoo;&lt;br&gt;&amp;gt;z();&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; reference to undefined property this.foo&lt;br&gt;&lt;br&gt;Not necessary. DOM objects and Javascript objects have different/seperate implementations, so this might be able to work for DOM, and for JS not.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#730439</link><pubDate>Tue, 29 Aug 2006 22:07:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:730439</guid><dc:creator>I Hate It</dc:creator><description>&amp;quot;2. &amp;nbsp;innerHTML vs. the DOM. &amp;nbsp;I recall reading an MSDN article ages ago that suggested that when building a select tag with lots of options dynamically it was actually faster to replace the entire tag via the innerHTML of its parent than it was to iterate through the select tags options collection adding options one at a time. &amp;nbsp;This remains fantastic advice to this day (the more options in the select tag the better). &amp;nbsp;Any other such tips surrounding innerHTML vs. the DOM? &amp;quot;&lt;br&gt;&lt;br&gt;If I recall correctly, the article isn't regarding it being faster. Its about a bug in IE6 that will clear a select tag of all its options if one attempts to use innerHTML on the select tag to change it's contents. Due to the bug one must either:&lt;br&gt;-Rewrite the whole select tag&lt;br&gt;-Use W3C DOM methods to edit the options</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#730455</link><pubDate>Tue, 29 Aug 2006 22:20:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:730455</guid><dc:creator>Dao Gottwald</dc:creator><description>&amp;gt; Not necessary. DOM objects and Javascript objects have different/seperate implementations, so this might be able to work for DOM, and for JS not.&lt;br&gt;&lt;br&gt;At least in IE, right?&lt;br&gt;I.e. this works in Firefox:&lt;br&gt;document.body.appendChild(document.createTextNode('abc'))&lt;br&gt;But this doesn't do anything:&lt;br&gt;var x = document.body.appendChild; x(document.createTextNode('abc'))&lt;br&gt;&lt;br&gt;I don't think I want to break my sites in favor of questionable IE hacks.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#730458</link><pubDate>Tue, 29 Aug 2006 22:20:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:730458</guid><dc:creator>Dao Gottwald</dc:creator><description>&amp;gt; Not necessary. DOM objects and Javascript objects have different/seperate implementations, so this might be able to work for DOM, and for JS not.&lt;br&gt;&lt;br&gt;At least in IE, right?&lt;br&gt;I.e. this works in Firefox:&lt;br&gt;document.body.appendChild(document.createTextNode('abc'))&lt;br&gt;But this doesn't do anything:&lt;br&gt;var x = document.body.appendChild; x(document.createTextNode('abc'))&lt;br&gt;&lt;br&gt;I don't think I want to break my sites in favor of questionable IE hacks.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#730688</link><pubDate>Wed, 30 Aug 2006 01:21:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:730688</guid><dc:creator>Andrew Eberhard</dc:creator><description>&amp;quot;If I recall correctly, the article isn't regarding it being faster. Its about a bug in IE6 that will clear a select tag of all its options if one attempts to use innerHTML on the select tag to change it's contents. Due to the bug one must either: &lt;br&gt;-Rewrite the whole select tag &lt;br&gt;-Use W3C DOM methods to edit the options&amp;quot;&lt;br&gt;&lt;br&gt;Actually, I've never done it that way probably because of the bug you mention. &amp;nbsp;I wrap the select tag in a span tag and call innerHTML on the span rather than the select.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#730764</link><pubDate>Wed, 30 Aug 2006 02:20:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:730764</guid><dc:creator>Dark Phoenix</dc:creator><description>&amp;gt; &amp;gt; I noticed that there isn't any word about the W3C Event Model, but I assume that's because in order to implement it, IE's entire event model would have to be rewritten (seeing as IE starts on the target element and bubbles the event upwards by default).&lt;br&gt;&lt;br&gt;&amp;gt; &lt;a rel="nofollow" target="_new" href="http://en.design-noir.de/webdev/JS/addEvent/"&gt;http://en.design-noir.de/webdev/JS/addEvent/&lt;/a&gt;&lt;br&gt;&lt;br&gt;I know. &amp;nbsp;A hack, to get around that IE doesn't support the full W3C Event Model. &amp;nbsp;Note also that addEvent can't do capture events, which is exactly what I was referring to.</description></item><item><title>  Javascript performance tips from the IE7 folks  at  Advanced CSS Design Resources - last-child.com</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#731000</link><pubDate>Wed, 30 Aug 2006 05:34:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:731000</guid><dc:creator>  Javascript performance tips from the IE7 folks  at  Advanced CSS Design Resources - last-child.com</dc:creator><description>PingBack from &lt;a rel="nofollow" target="_new" href="http://www.last-child.com/javascript-performance-tips-from-the-ie7-folks/"&gt;http://www.last-child.com/javascript-performance-tips-from-the-ie7-folks/&lt;/a&gt;</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#731077</link><pubDate>Wed, 30 Aug 2006 06:56:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:731077</guid><dc:creator>PatriotB</dc:creator><description>&amp;quot;It is also true that the W3C DOM does not enforce you to use real objects and methods. But it is encouraged to use the native language constructs where they fit and this is an obvious case. &amp;nbsp;... &amp;nbsp;To sum it up. This is ridiculous.&amp;quot;&lt;br&gt;&lt;br&gt;I disagree. &amp;nbsp;First of all, the &amp;quot;native language&amp;quot; for MSHTML is C++, as that is what it is written in. &amp;nbsp;Secondly, MSHTML's implementation seems to be primarily built around OLE Automation constructs (IDispatch), first created by the VB people long before JavaScript was invented; then, it was expanded to support Active Scripting concepts such as expandos (via IDispatchEx).&lt;br&gt;&lt;br&gt;MSHTML object methods are just that: methods on the underlying COM object. &amp;nbsp;MSHTML is completely &amp;quot;language-agnostic&amp;quot;, and thus its methods aren't specially tooled for JavaScript: methods are not separate &amp;quot;function&amp;quot; objects. &amp;nbsp;And I don't think that they should be. &amp;nbsp;Besides the memory and performance implications that would have, it would require a huge re-engineering of 10 years' worth of code, for little or no benefit.&lt;br&gt;&lt;br&gt;(That said, I'm not really sure why &amp;quot;typeof document.appendChild&amp;quot; would be object--I would expect it to fail altogether.)</description></item><item><title>hurry up!</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#731118</link><pubDate>Wed, 30 Aug 2006 07:45:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:731118</guid><dc:creator>web</dc:creator><description>&lt;br&gt;Bookmarked *and* waiting for parts 2/3</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#731425</link><pubDate>Wed, 30 Aug 2006 12:51:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:731425</guid><dc:creator>Dao Gottwald</dc:creator><description>&amp;gt; Secondly, MSHTML's implementation seems to be primarily built around OLE Automation&lt;br&gt;&amp;gt; constructs (IDispatch), first created by the VB people long before JavaScript was invented;&lt;br&gt;&lt;br&gt;Why should this bother a web developer? I really don't care about Microsoft's good reasons -- if they can't afford a decent JavaScript and DOM implementation, they shouldn't publish browsers. At least they shouldn't encourage &amp;quot;optimizations&amp;quot; that depend on their quirks.&lt;br&gt;&lt;br&gt;&amp;gt; First of all, the &amp;quot;native language&amp;quot; for MSHTML is C++, as that is what it is written in.&lt;br&gt;&lt;br&gt;&amp;gt; MSHTML object methods are just that: methods on the underlying COM object. &amp;nbsp;MSHTML is&lt;br&gt;&amp;gt; completely &amp;quot;language-agnostic&amp;quot;, and thus its methods aren't specially tooled for&lt;br&gt;&amp;gt; JavaScript: methods are not separate &amp;quot;function&amp;quot; objects.&lt;br&gt;&lt;br&gt;Now Gecko's native language isn't JavaScript either, and at the same time (a) DOM does look native in JavaScript and (b) it's open to other languages (Python in Gecko 1.9). Must be magic.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#731604</link><pubDate>Wed, 30 Aug 2006 15:33:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:731604</guid><dc:creator>Fduch</dc:creator><description>&amp;gt; Aedrin &lt;br&gt;&amp;gt; I wonder how many of these &amp;quot;complainers&amp;quot; &lt;br&gt;&amp;gt; even know what IE's code looks like. &lt;br&gt;&lt;br&gt;I posted some ridiculous parts of IE source code, but moderators censored them. I can post again if anyone wants.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#731612</link><pubDate>Wed, 30 Aug 2006 15:39:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:731612</guid><dc:creator>evg</dc:creator><description>@foobar&lt;br&gt;tino is absolutely right.&lt;br&gt;How Microsoft can promote standards, while using themselves non-standard code? &lt;br&gt;What's to the value of the article, while I find the variables part useful, the part of functions caching is totaly missing the point.&lt;br&gt;Why should I think, whether is is COM or anything else underneath? It is am implimentation details, and since I am not going to perform any heavy algorhitm using JavaScript, I do prefer to just keep my code clean (again, var helps keeping the code clean).</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#731629</link><pubDate>Wed, 30 Aug 2006 15:54:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:731629</guid><dc:creator>evg</dc:creator><description>@Aedrin&lt;br&gt;By the way, what is the engine you are talking about - gecko was created from the ground up, so is Opera, so is KHTML.&lt;br&gt;But I am stopping right there, since I have no intention starting a LONG flamewar.&lt;br&gt;</description></item><item><title>Script Performance</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#731796</link><pubDate>Wed, 30 Aug 2006 17:26:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:731796</guid><dc:creator>hughpyle</dc:creator><description>If you're building anything complex with the Groove Forms tool, you probably use plenty of script code.&amp;amp;amp;nbsp;...</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#732139</link><pubDate>Wed, 30 Aug 2006 20:34:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:732139</guid><dc:creator>arv</dc:creator><description>I had a big issue due to garbage collection in jscript till now, see the thread on (&lt;a rel="nofollow" target="_new" href="http://groups.google.com/group/microsoft.public.inetsdk.programming.scripting.jscript/browse_thread/thread/d758f148f03cd2ed/cc6143cd1b0d1e38?lnk=st&amp;amp;q=jscript+slow+performance+ie+firefox&amp;amp;rnum=2#cc6143cd1b0d1e3"&gt;http://groups.google.com/group/microsoft.public.inetsdk.programming.scripting.jscript/browse_thread/thread/d758f148f03cd2ed/cc6143cd1b0d1e38?lnk=st&amp;amp;q=jscript+slow+performance+ie+firefox&amp;amp;rnum=2#cc6143cd1b0d1e3&lt;/a&gt;)&lt;br&gt;&lt;br&gt;I had created a simple htm page (&lt;a rel="nofollow" target="_new" href="http://www.geocities.com/arvindsagarwal/test.htm"&gt;http://www.geocities.com/arvindsagarwal/test.htm&lt;/a&gt;) to test how jscript used to behave when lot of objects are created, and the results for ie 6 where really bad. &lt;br&gt;&lt;br&gt;Good to see dramatic difference in ie7 rc1, and the page shows much better results. My application works much better now on ie7 rc1.&lt;br&gt;&lt;br&gt;i had given up hopes of anything happening in this area since till last beta also there was no mention of anything to do with Jscript engine. &lt;br&gt;</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#732283</link><pubDate>Wed, 30 Aug 2006 22:40:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:732283</guid><dc:creator>Aedrin</dc:creator><description>&amp;quot;gecko was created from the ground up&amp;quot;&lt;br&gt;&lt;br&gt;Yes. Which is why I said that FireFox itself builds upon existing technologies (Gecko), as to where IE is built on its own technology (Trident).</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#732300</link><pubDate>Wed, 30 Aug 2006 22:53:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:732300</guid><dc:creator>Dark Phoenix</dc:creator><description>&amp;gt; &amp;quot;gecko was created from the ground up&amp;quot;&lt;br&gt;&lt;br&gt;&amp;gt; Yes. Which is why I said that FireFox itself builds upon existing technologies (Gecko), as to where IE is built on its own technology (Trident).&lt;br&gt;&lt;br&gt;...except that Gecko was created specifically for the Mozilla Suite, and Firefox is the browser component. &amp;nbsp;Firefox WAS written from the ground up.&lt;br&gt;&lt;br&gt;And anyway, I was under the impression that IE was originally an extension of the Mosaic browser...</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#732734</link><pubDate>Thu, 31 Aug 2006 05:33:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:732734</guid><dc:creator>PatriotB</dc:creator><description>&amp;quot;And anyway, I was under the impression that IE was originally an extension of the Mosaic browser... &amp;quot;&lt;br&gt;&lt;br&gt;IE 1 and 2 were standalone EXEs whose rendering engine was, for the most part, based on Mosaic, from what I know.&lt;br&gt;&lt;br&gt;IE 3 was componentized into several DLLs including the rendering engine, MSHTML.DLL. &amp;nbsp;I don't know how much of IE3's MSHTML was based on Mosaic. &amp;nbsp;However, I know that by IE4, MSHTML was entirely MS code (Trident), and no longer based on Mosiac at all.&lt;br&gt;&lt;br&gt;Interestingly, up through IE6, MS still credits Mosaic in the About box. &amp;nbsp;IE7, however, has removed that text.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#732788</link><pubDate>Thu, 31 Aug 2006 06:25:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:732788</guid><dc:creator>Ted</dc:creator><description>&amp;lt;&amp;lt;I posted some ridiculous parts of IE source code, but moderators censored them. I can post again if anyone wants. &amp;gt;&amp;gt;&lt;br&gt;&lt;br&gt;1&amp;gt; There's no reason for anyone to believe that your samples are in the product &amp;amp;/or ever were in IE.&lt;br&gt;&lt;br&gt;2&amp;gt; If you do decide to post copyrighted source code, save Microsoft's lawyers some trouble and post your home address.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#733686</link><pubDate>Thu, 31 Aug 2006 19:25:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:733686</guid><dc:creator>zmc</dc:creator><description>Excellent article! Can't wait for part 2. For those of you who are saying this is nothing but premature optimization, I think you have missed the point, which was to show you baseline examples of how to reproduce the cases. Knowing where the engine shines and where it doesn't surely is good thing. &amp;nbsp;&lt;br&gt;&lt;br&gt;I do have some questions for the IE+JScript integration team and I think some posters have already commented on it. When is IE going to expose the DOM prototypes? This really hurts developers considering most other browsers support it. I understand that DOM objects are refcounted COM objects and the JScript engine doesn't truly own them, but isn't there some way you could emulate them as special cases? There has to be a solution to this other than &amp;quot;IE is special and it's hard&amp;quot; right? Are all of the components of IE really that decoupled from eachother? &lt;br&gt;&lt;br&gt;I think the root of this issue, as I understand it, is that JScript is a complete standalone component and could be used outside the context of MSHTML. By the same token, MSHTML is a standalone component, and can be used without JScript. This decoupling prevents the JScript team from adding code to deal specifically with MSHTML COM objects, which makes sense because it shouldn't have to know about outside components. But, can't we all agree that the web browser is a special case and certainly warrants whatever work needs to be done to fix it? Is it out of the question to think about branching a special version of MSHTML and a special version of JScript specifically for IE that are intimate enough to make this and many other long-standing technical issues be solved?&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;quot;I want you all to know that we have been listening and have recently made some great fixes to our engine to improve the garbage collection routine and to reduce unbounded memory growth.&amp;quot; &lt;br&gt;&lt;br&gt;Are you referring to the cyclic COM object reference memory leaks? This probably ties right in with my other comments about possibly tightening the relationship between MSHTML + JScript specifically for the IE product. Coupling the 2 components would certainly bring about solutions to the memory leaks because maybe JScript can inspect COM refcounts (I don't know the internals, I am speculating, anyone who wants to clarify please do). What I do know is that, technical difficulties or not, gigantic memory leaks in IE are holding up large scale client-script driven apps. </description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#733886</link><pubDate>Thu, 31 Aug 2006 21:22:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:733886</guid><dc:creator>Gordon</dc:creator><description>Uhm, creating a variable called &amp;quot;length&amp;quot; is asking for trouble.&lt;br&gt;&lt;br&gt;It might not be a reserved word, but it's like poking the devil with a sharp stick and not expecting to get burned.&lt;br&gt;&lt;br&gt;good to see that JavaScript wasnt forgotten, it would be better if there was improvments on the level of support (DOM features etc.) but capping some of the leaks is also good.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#733893</link><pubDate>Thu, 31 Aug 2006 21:29:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:733893</guid><dc:creator>Will</dc:creator><description>I concur with all that say the reference to document.all should be abandoned. It severely polutes the document object, it is not xbrowser compatible, and therefore leads to bad design.&lt;br&gt;&lt;br&gt;Have you ever run into code, where the developer created forms called &amp;quot;images&amp;quot;, &amp;quot;body&amp;quot;, or &amp;quot;links&amp;quot; etc.? Man that makes nightmares.&lt;br&gt;&lt;br&gt;Please correctly lead the Web development community by posting valid DOM samples, that are xbrowser compatible, and that avoid any reference to proprietary objects/methods.</description></item><item><title>Notes on the interaction of ClearType with DXTransforms in IE7</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#733974</link><pubDate>Thu, 31 Aug 2006 22:00:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:733974</guid><dc:creator>IEBlog</dc:creator><description>Hello again, this is Peter Gurevich, IE PM for ClearType (among other things, as my blog posts have shown).&amp;amp;amp;nbsp;...</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#734230</link><pubDate>Fri, 01 Sep 2006 00:43:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:734230</guid><dc:creator>Fduch</dc:creator><description>@Ted &lt;br&gt;{{&lt;br&gt;&amp;lt;&amp;lt;I posted some ridiculous parts of IE source code, but moderators censored them. I can post again if anyone wants. &amp;gt;&amp;gt; &lt;br&gt;&lt;br&gt;1&amp;gt; There's no reason for anyone to believe that your samples are in the product &amp;amp;/or ever were in IE. &lt;br&gt;&lt;br&gt;2&amp;gt; If you do decide to post copyrighted source code, save Microsoft's lawyers some trouble and post your home address. }}&lt;br&gt;&lt;br&gt;1) I can't prove that the code is still there, BUT&lt;br&gt; a) I notice some BAD behavior in IE6&lt;br&gt; b) I found the source code for that part and it looked BAD&lt;br&gt; c) IE7 has the same visible behavior, so I assume that this part of code wasn't changed.&lt;br&gt;2) I don't think that getting my address from my Live ID is big deal for them.&lt;br&gt;&lt;br&gt;P.S. I am pro IE7. I just REALLY want some issues be finally FIXED.</description></item><item><title>VBScript</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#734800</link><pubDate>Fri, 01 Sep 2006 09:24:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:734800</guid><dc:creator>Erik</dc:creator><description>Are there any improvements in the VBScript engine for IE7?</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#735330</link><pubDate>Fri, 01 Sep 2006 17:27:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:735330</guid><dc:creator>Chris Breen</dc:creator><description>&amp;gt; var elementText = BuildTitle() + BuildBody() + BuildFooter();&lt;br&gt;&amp;gt; document.getElementById(‘target’).innerHTML = elementText;&lt;br&gt;&lt;br&gt;I my experience I've found that appending the innerHTML of an element rather than manipulating the DOM leaks memory in IE like a leaky sieve.&lt;br&gt;&lt;br&gt;The function caching is a new idea to me, thanks for that.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#735644</link><pubDate>Fri, 01 Sep 2006 21:22:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:735644</guid><dc:creator>Dave Massy [MSFT]</dc:creator><description>Erik,&lt;br&gt;There has been no real work done on the VBScript engine for IE7. We expect to focus on cross browser technologies in the future so JavaScript is likely to receive more atention that VBScript moving forward.&lt;br&gt;Thanks&lt;br&gt;-Dave</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#735949</link><pubDate>Sat, 02 Sep 2006 02:17:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:735949</guid><dc:creator>Tino Zijdel</dc:creator><description>ok, I did some testing myself to verify the tips mentioned in this blogpost.&lt;br&gt;&lt;br&gt;Test setup:&lt;br&gt;Machine: AMD XP2000 512MB RAM running Windows 2000 SP4&lt;br&gt;Browsers tested:&lt;br&gt;IE6 SP1 (no IE7 for win2k...)&lt;br&gt;Firefox 1.5.0.6&lt;br&gt;Opera 9.01&lt;br&gt;&lt;br&gt;First I tested the tip on caching function-pointers in a local variable:&lt;br&gt;&lt;br&gt;function bench1()&lt;br&gt;{&lt;br&gt;	var s = new Date().getTime();&lt;br&gt;&lt;br&gt;	var i = 500000;&lt;br&gt;	while (i--)&lt;br&gt;	{&lt;br&gt;		foo();&lt;br&gt;	}&lt;br&gt;&lt;br&gt;	var e = new Date().getTime();&lt;br&gt;	alert (e-s);&lt;br&gt;}&lt;br&gt;&lt;br&gt;function bench2()&lt;br&gt;{&lt;br&gt;	var s = new Date().getTime();&lt;br&gt;&lt;br&gt;	var i = 500000;&lt;br&gt;	var func = foo;&lt;br&gt;	while (i--)&lt;br&gt;	{&lt;br&gt;		func();&lt;br&gt;	}&lt;br&gt;&lt;br&gt;	var e = new Date().getTime();&lt;br&gt;	alert (e-s);&lt;br&gt;}&lt;br&gt;&lt;br&gt;function foo()&lt;br&gt;{&lt;br&gt;	var a = Math.random();&lt;br&gt;}&lt;br&gt;&lt;br&gt;Results:&lt;br&gt;&lt;br&gt;IE6&lt;br&gt;bench1: 1282ms&lt;br&gt;bench2: 1432ms&lt;br&gt;&lt;br&gt;Firefox&lt;br&gt;bench1: 2454ms&lt;br&gt;bench2: 3765ms&lt;br&gt;&lt;br&gt;Opera&lt;br&gt;bench1: 982ms&lt;br&gt;bench2: 841ms&lt;br&gt;&lt;br&gt;Conclusion: only Opera seems to benefit from this tip, both IE6 and Firefox actually perform worse by 'caching' a global functionpointer in a local variable.&lt;br&gt;&lt;br&gt;&lt;br&gt;Now for the other tip, caching a reference to a DOM-method on an element:&lt;br&gt;&lt;br&gt;function bench1()&lt;br&gt;{&lt;br&gt;	var s = new Date().getTime();&lt;br&gt;&lt;br&gt;	var i = 5000;&lt;br&gt;	var element = document.getElementById('foo');&lt;br&gt;	while (i--)&lt;br&gt;	{&lt;br&gt;		element.appendChild(document.createTextNode('a'));&lt;br&gt;	}&lt;br&gt;&lt;br&gt;	var e = new Date().getTime();&lt;br&gt;	alert (e-s);&lt;br&gt;}&lt;br&gt;&lt;br&gt;function bench2()&lt;br&gt;{&lt;br&gt;	var s = new Date().getTime();&lt;br&gt;&lt;br&gt;	var i = 5000;&lt;br&gt;	var myappend = document.getElementById('foo').appendChild;&lt;br&gt;	while (i--)&lt;br&gt;	{&lt;br&gt;		myappend(document.createTextNode('a'));&lt;br&gt;	}&lt;br&gt;&lt;br&gt;	var e = new Date().getTime();&lt;br&gt;	alert (e-s);&lt;br&gt;}&lt;br&gt;&lt;br&gt;Results:&lt;br&gt;&lt;br&gt;IE6&lt;br&gt;bench1: 951ms&lt;br&gt;bench2: 1462ms&lt;br&gt;&lt;br&gt;Firefox&lt;br&gt;bench1: 1723ms&lt;br&gt;bench2: error&lt;br&gt;&lt;br&gt;Opera&lt;br&gt;bench1: 160ms&lt;br&gt;bench2: error&lt;br&gt;&lt;br&gt;Conclusion: apart from the fact that this sort of construction only seems to work in IE, the 'tip' is actually a lot slower(!)&lt;br&gt;&lt;br&gt;&lt;br&gt;If you are to append a lot of elements to a certain DOM element I would suggest detaching this containing element from the DOM, appending, and re-attach it again something like:&lt;br&gt;&lt;br&gt;function bench3()&lt;br&gt;{&lt;br&gt;	var s = new Date().getTime();&lt;br&gt;&lt;br&gt;	var i = 5000;&lt;br&gt;	var container = document.body.removeChild(document.getElementById('foo'));&lt;br&gt;	while (i--)&lt;br&gt;	{&lt;br&gt;		container.appendChild(document.createTextNode('a'));&lt;br&gt;	}&lt;br&gt;	document.body.appendChild(container);&lt;br&gt;&lt;br&gt;	var e = new Date().getTime();&lt;br&gt;	alert (e-s);&lt;br&gt;}&lt;br&gt;&lt;br&gt;Results:&lt;br&gt;&lt;br&gt;IE6: 800ms&lt;br&gt;Firefox: 210ms&lt;br&gt;Opera: 140ms&lt;br&gt;&lt;br&gt;Furthermore a lot of time can be spent by the evaluation of the condition in a loop:&lt;br&gt;&lt;br&gt;for (var i = 0; i &amp;lt; elements.length; i++) { }&lt;br&gt;&lt;br&gt;here the length-property needs to be accessed every iteration, this is a big penalty when 'elements' is f.i. a live Nodelist. Much faster variants are:&lt;br&gt;&lt;br&gt;for (var i = 0, l = elements.length; i &amp;lt; l; i++) { }&lt;br&gt;&lt;br&gt;or when order doesn't matter:&lt;br&gt;&lt;br&gt;var i = elements.length;&lt;br&gt;while (i--) { }&lt;br&gt;&lt;br&gt;or even better:&lt;br&gt;&lt;br&gt;var element, i = 0;&lt;br&gt;while ((element = elements[i++])) { }&lt;br&gt;&lt;br&gt;&lt;br&gt;General conclusion: this blogpost belongs in the garbage-bin. It promotes non-standard techniques and the actual 'tips' are worthless.&lt;br&gt;Note also that IE has an advantage when it comes to rendering DOM-changes; it's renderengine is optimized for speed, not for standards-compliance.&lt;br&gt;In that light it is pretty interesting to see that Opera 9 outperforms both IE and Firefox by a huge margin.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#736004</link><pubDate>Sat, 02 Sep 2006 03:11:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:736004</guid><dc:creator>Tino Zijdel</dc:creator><description>I tested the above also on my laptop running winXP with IE7RC1 but the results show the same: performance of the 'tips' is actually worse than the 'normal' method, which means that 'caching function pointers' and 'caching DOM methods' is useless.&lt;br&gt;Caching DOM references however is still a good idea, but I guess everone already knew that...</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#736544</link><pubDate>Sat, 02 Sep 2006 15:28:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:736544</guid><dc:creator>Tino Zijdel</dc:creator><description>By the way: when I reference a method on an object and execute that method I expect it to be executed in the global scope; the way that MS seems to have implemented the DOM ECMAScript bindings is completely illogical.&lt;br&gt;&lt;br&gt;I'm also looking forward to part 2 and 3, I hope they will be as interesting as this article :P</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#736684</link><pubDate>Sat, 02 Sep 2006 17:04:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:736684</guid><dc:creator>Fduch</dc:creator><description>pwned :-)&lt;br&gt;&lt;br&gt;Now I understand why overall perfomance of IE7 is so bad... with half-minute lags sometimes occuring when switching tabs.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#736730</link><pubDate>Sat, 02 Sep 2006 17:57:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:736730</guid><dc:creator>AnonL</dc:creator><description>-&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;@IE-team: just take a look at benchmark 3 in this comment for a tiny math performance issue. And Love the article by the way, looking forward to later parts.&lt;br&gt;&lt;br&gt;@Tino and few others:&lt;br&gt;&lt;br&gt;I Love these quibbling comments of yours Tino! I actually like people with a meticulous sense of fault-finding. Well, there's a downside to it that when people complain a lot, their strictures precision wears off logarithmically. In this particular case, I might pin Peter for his rather ambiguous exposition on the matter which started it all in the first place :) &amp;quot;No explanation of any kind or amount is enough; Ever!&amp;quot; would have been a good memo. &lt;br&gt;&lt;br&gt;Anyway, for a follow-up to Tino's unprofitable experiment, I've done some of my own, with some interesting results. There's a little misunderstanding in Tino's take on the function caching Peter has stressed on. The point was about functions in places where they're completely out of scope of each other like those cutesy little objects we create in JScript. Below, I've written some over-simplified JS to check them out.&lt;br&gt;&lt;br&gt;My machine setup: a generic overclocked Intel.&lt;br&gt;IE6 sp1 on win2k (yep, another old school win2k fan over here!)&lt;br&gt;FF 1.5.0.6 and Opera 9.01&lt;br&gt;&lt;br&gt;-------------------------------------------------------&lt;br&gt;&lt;br&gt;/* Benchmark 1 */&lt;br&gt;&lt;br&gt;function myObject1() &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.get = calculate;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;function doSomeDivision(num)&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return num/1.31415;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;function calculate(num)&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var i=300000;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while(i--)&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;num = doSomeDivision(num)+doSomeDivision(2.71828);&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return num;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;function myObject2() &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt;{ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.get = calculate;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;function doSomeDivision(num)&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return num/1.31415;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;function calculate(num)&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var doSomeDivision_pointer = doSomeDivision;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var i=300000;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while(i--)&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;num = doSomeDivision_pointer(num)+doSomeDivision_pointer(2.71828);&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return num;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;br&gt;function bench1() &lt;br&gt;{ &lt;br&gt;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var s = new Date().getTime(); &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var obj1 = new myObject1();&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var out = obj1.get(1234567890);&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var e = new Date().getTime();&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert (e-s); &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//--------------------------------------&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var s = new Date().getTime(); &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var obj2 = new myObject2();&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var out = obj2.get(1234567890);&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var e = new Date().getTime();&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert (e-s); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt;}&lt;br&gt;&lt;br&gt;bench1();&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------------------------------&lt;br&gt;Benchmark 1 results:&lt;br&gt;&lt;br&gt;IE: &lt;br&gt;(no-cach): 1453&lt;br&gt;(cached ): 1328&lt;br&gt;+125ms benefit.&lt;br&gt;&lt;br&gt;FF:&lt;br&gt;(no-cach): 2515&lt;br&gt;(cached ): 2438&lt;br&gt;+77ms benefit.&lt;br&gt;&lt;br&gt;Opera:&lt;br&gt;(no-cach): 406&lt;br&gt;(cached ): 391&lt;br&gt;+15ms benefit.&lt;br&gt;&lt;br&gt;Well, It's clear (to me at least) that the article may have not belonged in the garbage bin as previously thought after all.&lt;br&gt;&lt;br&gt;By the way, as I was playing with the setup, I found out that we can optimize the code big time if we reference functions to object they belong to (using &amp;quot;this&amp;quot; property).&lt;br&gt;&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------&lt;br&gt;/* Benchmark 2 */&lt;br&gt;function myObject3()&lt;br&gt;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.get = calculate;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;function doSomeDivision(num)&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return num/1.31415;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.doSomeDivision = doSomeDivision;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;function calculate(num)&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var i=300000;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while(i--)&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;num = this.doSomeDivision(num) + this.doSomeDivision(2.71828);&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return num;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;br&gt;function bench2() &lt;br&gt;{ &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var s = new Date().getTime(); &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var obj3 = new myObject3(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var out = obj3.get(1234567890);&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var e = new Date().getTime(); &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert (e-s); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt;}&lt;br&gt;&lt;br&gt;bench2();&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------&lt;br&gt;Increase in performance is significant especially in FF:&lt;br&gt;&lt;br&gt;Benchmark 2 results:&lt;br&gt;IE: &lt;br&gt;( no-cach ): 1453&lt;br&gt;(object-ref): 1100&lt;br&gt;+353ms &lt;br&gt;&lt;br&gt;FF:&lt;br&gt;( no-cach ): 2515&lt;br&gt;(object-ref): 1094&lt;br&gt;+1421ms!&lt;br&gt;&lt;br&gt;Opera:&lt;br&gt;( no-cach ): 406&lt;br&gt;(object-ref): 406&lt;br&gt;No difference!&lt;br&gt;&lt;br&gt;I've no idea what gives about how the way IE and FF look-up system interprets these references that it yields this huge boosts but they definitely enjoy this a lot.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;=============&lt;br&gt;&lt;br&gt;&lt;br&gt;Ok, for some non-relevant performance issues, I found IE (and opera) can use some guess work when dealing with cracked mathematicians:&lt;br&gt;&lt;br&gt;/* Benchmark 3 */&lt;br&gt;function bench3()&lt;br&gt;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var s = new Date().getTime();&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var i = 500000; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while(i--)&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var num= 1234.12345 / 0;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var e = new Date().getTime(); &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert (e-s);&lt;br&gt;}&lt;br&gt;bench3();&lt;br&gt;&lt;br&gt;------------------&lt;br&gt;IE: 391ms, FF:47ms, Opera: 266ms&lt;br&gt;&lt;br&gt;Anything divided by zero means infinity. A lot of people know this, including FireFox! Yes, this is incredibly stupid setup, but if IE's Jscript people do us a favor and take care of this we might save ourselves from hearing a lot of things like &amp;quot;IE is STUPID dude! FF knows anything divided by zero is infinity but IE has to ask the co-processor every single time; dude.&amp;quot;&lt;br&gt;&lt;br&gt;And for the last test I show you it's not the calculation part that makes the Opera to be the boss here:&lt;br&gt;&lt;br&gt;/* Benchmark 4 */&lt;br&gt;function bench4()&lt;br&gt;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var s = new Date().getTime(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var i = 500000;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while(i--)&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var num= Math.sqrt(3.1415);&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var e = new Date().getTime(); &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert (e-s); &lt;br&gt;}&lt;br&gt;bench4();&lt;br&gt;&lt;br&gt;-----------------------------&lt;br&gt;IE:265ms, FF:718ms, Opera:312ms&lt;br&gt;&lt;br&gt;It's clear Opera's strength lays in the way its script engine compiles the JS instruction on the air. I'd love to know how they've done that.&lt;br&gt;&lt;br&gt;===================================================&lt;br&gt;&lt;br&gt;Conclusion:&lt;br&gt;&lt;br&gt;A) Although people working at Microsoft may have been some Homo Sapiens descended from some random ape-like creatures which were themselves descended from other nasty things, they make things or write articles that are actually credible most of the time, in contrast with people working in open source holy community which are intelligently designed and make sacred things like FireFox and will rule the world sooner or later.&lt;br&gt;&lt;br&gt;B) FireFox community could definitely use some members with &amp;quot;I Love to Complain&amp;quot; t-shirt on. IE community is heavily using them right now with lovely results.&lt;br&gt;&lt;br&gt;C) Opera kicks butt! (In JS arena at least)&lt;br&gt;&lt;br&gt;Thanks for reading this ~&lt;br&gt;&lt;br&gt;</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#736924</link><pubDate>Sat, 02 Sep 2006 21:12:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:736924</guid><dc:creator>AnonL</dc:creator><description>&lt;br&gt;I didn't jump to conclusion about cached DOM methods above until I'm totally sure Tino trash talk was right on the money. Now I'm pretty much sure it was. Excellent job Tino!&lt;br&gt;&lt;br&gt;Caching function pointers is an unavoidable rule of thumb and I think Peter simply extended this principle to cover DOM methods which backfired with the performance reek Tino glorified above. I reckon the reason might be over-optimization, like double-zipping an already zipped file. I believe IE has already optimized its DOM method access and we have got to avoid overdoing it. Anyway, unless there has been something we totally mistook (or something they're still working on), our Performance PM got some amendment to do about this one.&lt;br&gt;&lt;br&gt;Interestingly, this whole caching function pointer technique still holds water with custom functions we define on the DOM objects as the article expected:&lt;br&gt;&lt;br&gt;/* benchmark 5 */&lt;br&gt;function bench5()&lt;br&gt;{&lt;br&gt;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var element = document.getElementById('foo').myMethod= function(val){return val/1.000001}&lt;br&gt;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var s = new Date().getTime();&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var element = document.getElementById('foo'); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var i = 100000; var out = i;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while(i--)&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;out = element.myMethod(out);&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var e = new Date().getTime(); &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert (&amp;quot;Non-cached method: &amp;quot;+(e-s));&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//-------------------------------------&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var s = new Date().getTime();&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var elementAppend_pointer = document.getElementById('foo').myMethod;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var i = 100000; var out = i;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while(i--)&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; out = elementAppend_pointer(out);&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var e = new Date().getTime(); &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert (&amp;quot;Cached method: &amp;quot;+(e-s));&lt;br&gt;}&lt;br&gt;bench5();&lt;br&gt;&lt;br&gt;------------------&lt;br&gt;IE:&lt;br&gt;(non-cached):1125&lt;br&gt;( &amp;nbsp; &amp;nbsp;cached &amp;nbsp; ):203&lt;br&gt;+922&lt;br&gt;&lt;br&gt;FF:&lt;br&gt;(non-cached):141&lt;br&gt;( &amp;nbsp; &amp;nbsp;cached &amp;nbsp; ):250&lt;br&gt;-109&lt;br&gt;&lt;br&gt;Opera:&lt;br&gt;(non-cached):79&lt;br&gt;( &amp;nbsp; &amp;nbsp;cached &amp;nbsp; ):62&lt;br&gt;+17&lt;br&gt;&lt;br&gt;As I can see, IE definitely needs to reconsider some inner DOM look-up optimizations; With FF we apparently hit the overdoing wall again and Opera rocks as usual.&lt;br&gt;&lt;br&gt;Keep it up Tino, as I've always said, any community could use some flying brickbats - fair or foolish. Whether your technique is pure pessimism or simply a 'throw enough stuff at the wall' approach, just keep it up.&lt;br&gt;&lt;br&gt;Thanks again. ~&lt;br&gt;&lt;br&gt;</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#736992</link><pubDate>Sat, 02 Sep 2006 22:42:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:736992</guid><dc:creator>Tino Zijdel</dc:creator><description>AnonL: thanks for the heads-up. My sarcasm is actually more an expression of frustration having to deal with IE's quirks, bugs and shortcomings on a daily basis and the fact that that wil not change much with the coming of IE7.&lt;br&gt;&lt;br&gt;Now for your excellent post on the caching of functionpointers: I still think that in 99% of all cases there will be just one step down in the scopechain to look up some global function, and as my benchmarks show this is only more costly. For the other 1% where this technique actually might improve performance you would have to ask yourself if this 125ms over 300.000 lookups (something you will rarely do in normal code) really makes a difference. As you yourself splendidly demonstrated with your second benchmark (although I would prefer prototyping the methods, especially when you plan to create many of those objects) it makes much more sence to refactor the code in such way that you don't need to do lookups down the scopechain at all, and in production code there are probably far better candidates for optimization than those lookups. In fact, in my experience heavy javascript applications only spent a very small amount of time executing arbitrary javascript code and most of the time repainting and rendering the interface.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#737025</link><pubDate>Sat, 02 Sep 2006 23:12:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:737025</guid><dc:creator>Tino Zijdel</dc:creator><description>AnonL: as for your benchmark no. 5 it must be noted that these 2 methods (cached and non-cached) are not really the same; in the non-cached version myMethod is executed in the scope of the DOM object, in the cached version it is executed in the global scope. I think that would explain the difference in IE where DOM objects are actually COM objects and this interface might just be responsible for the delay.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#739602</link><pubDate>Mon, 04 Sep 2006 17:54:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:739602</guid><dc:creator>verdy_p</dc:creator><description>Isn't there any way for the Javascript engine to fix the way it handles the + operator so that it will be parsed as a list of items to add, then items will be parsed and computed, and the type of the first computed item in the list will indicate how to compute the final operation in the list (concatenation or numeric addition)?&lt;br&gt;If so, the + operator would no longer be a binary operator evaluated step by step in a chain, but instead would be avaluated by compiling an expression that first takes the sum of the string lengths, allocates a single buffer for the result, and then performs the concatenation with a single copy into that buffer.&lt;br&gt;Compare this to how Java compiles a String concatenation using an intermediate StringBuffer (before Java5) or an unsynchronized StringBuilder (in Java5+), which gets transfermed into a String object only at end of the concatenations: it is much smarter than IE's implementation of string concatenation in JavaScript, and a lot faster because it saves many reallocations. This is especially important when generating complex strings with many items, such as the string to assign to an .innerHTML property of a document or &amp;lt;div&amp;gt; container, with many items concatenated with +.&lt;br&gt;&lt;br&gt;Of course this won't resolve the case of the += operator used many times. For this issue, one must use an heuristic like the one used in Java's StringBuffer or StringBuilder, that allocates space with an heuristic for possible extensions: the extra space may be freed only when converting it to the final non-mutable String, if this really saves enough bytes, or if there's a system in the Garbage Collector that allows freeing asynchronously the extra unused space at end of non-mutable arrays and buffers (like the &amp;quot;string&amp;quot; object backing store buffers); but this may require changing the objects allocation descriptors (with a way to specify the effectively used length and to mark the mutable status), so may be a lot of work in the GC implementation (this is not needed in Java because it natively differentiates the backing store of arrays from simple fixed-size objects, so the length of arrays and the mutable status has always been part of the internal representation, also because Java uses multiple heaps for arrays and for fixed-size objects, to speed up the GC and the reuse of freed objects in the fixed-size heaps, without needing multiple moves for the same objects when compacting the heap free space).&lt;br&gt;&lt;br&gt;I really hope that IE's implementation of the Javascript GC will continue to be improved (because the current memory usage of IE is still too large, and its GC is extremely slow to reclaim the unused memory into a much smaller heap with faster data locality that performs much better with the processor cache and the extra slow virtual memory committed to disk).</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#739663</link><pubDate>Mon, 04 Sep 2006 18:26:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:739663</guid><dc:creator>verdy_p</dc:creator><description>why not compiling:&lt;br&gt; &amp;nbsp;&amp;quot;a&amp;quot; + b + &amp;quot;c&amp;quot; + d&lt;br&gt;as if it was:&lt;br&gt; &amp;nbsp;[&amp;quot;a&amp;quot;, b, &amp;quot;c&amp;quot;, d].join(&amp;quot;&amp;quot;)&lt;br&gt;except that it would be using an intrinsic method (non-overridable, except if IE provides a way to override operators like in C++, something that is external to ECMAScript design), without parameter, that checks the datatype of the first element of the array to determine if this is concatenation or concatenation instead of a function lookup for join, something like:&lt;br&gt; &amp;nbsp;[&amp;quot;a&amp;quot;, b, &amp;quot;c&amp;quot;, d].&amp;quot;__plus__&amp;quot;()&lt;br&gt;This way of compiling would be prefered if there are more than 2 elements in the array (otherwise the array construction will just loose time needlessly)&lt;br&gt;</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#740101</link><pubDate>Tue, 05 Sep 2006 00:38:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:740101</guid><dc:creator>Tino Zijdel</dc:creator><description>verdy_p: are you seriously suggesting that Microsoft should change it's ECMAScript implementation (which is a standard) to something non-standard?&lt;br&gt;Are you one of those people that think that Javascript should be more like Java? or Python? or Ruby? It's not, get over it and deal with it.&lt;br&gt;&lt;br&gt;The 'problem' with the + operator being used both as an arithmic operator and a string operator depending on the operands is something that only folks novice to Javascript seem to have problems with. Now I'm not saying that you are a complete n00b when it comes to Javascript but I'm sure you will understand that changing some fundamental behavior in a language that has been widely used for years is something that simply cannot be done, and surely not just by one party - Microsoft still has enough work to do fixing those areas that still aren't compliant to existing specifications and standards.</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#742582</link><pubDate>Wed, 06 Sep 2006 14:27:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:742582</guid><dc:creator>Nigel Moore</dc:creator><description>Good article, but the comments wre more enlightening!&lt;br&gt;&lt;br&gt;I'm looking forward to part 2!</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#744474</link><pubDate>Thu, 07 Sep 2006 17:42:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:744474</guid><dc:creator>AnonL</dc:creator><description>-&lt;br&gt;&lt;br&gt;&lt;br&gt;I'm late again. In case someone is still following this comment threads...&lt;br&gt;&lt;br&gt;&lt;br&gt;@Tino:&lt;br&gt;Just to sort out my conclusion on the DOM function referencing, I might say it is basically a pretty bad idea to start with. About benchmark 5 above, I don't think the scope change - although been drastic and convincingly an erratic behavior - is the main reason behind browser's better performance, evidently it's simply more a cached pointer at work. Concerning real DOM functions, well, they turned out to be no cutesy cuddly objects at all. No browser gives you a function pointer on DOM method inquires. Apparently when we try to do so, they retrieve a pointer to an alien Object that is itself cloned from the DOM interface. That's where we draw a line between JavaScript playground and browser interior structures. They simply don't fraternize. I tried to loop through (using &amp;quot;for...in&amp;quot;) one of those mutations which crashed mshtml.dll out of IE. FF simply tosses a dead non-native Object. I guess IE's COM implantation still allow the object to do its job at the expense of performance downgrades and irregularities like that ugly crash. &lt;br&gt;&lt;br&gt;Just a simple note to myself:&lt;br&gt;* * * * * * * * * * * * * * * * * * * * * * * * * *&lt;br&gt;&amp;quot;No funny business with DOM methods&amp;quot;.&lt;br&gt;&lt;br&gt;* * * * * * * * * * * * * * * * * * * * * * * * * *&lt;br&gt;&lt;br&gt;And about that frustration part, I think all these people commenting here would give you an &amp;quot;I've been there&amp;quot; monologue of their own labor. Personally I imagine I've relocated my high expectations to IE8 long ago; just to keep my calm. Or sanity.&lt;br&gt;&lt;br&gt;You just keep yourself buckled down for coming parts of this article. &lt;br&gt;&lt;br&gt;Thanks ~&lt;br&gt;</description></item><item><title>re: IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#748428</link><pubDate>Sun, 10 Sep 2006 09:18:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:748428</guid><dc:creator>vasso zahuidze</dc:creator><description>windos sucks</description></item><item><title>Petits articles interessants pour dveloppeurs web...</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#751207</link><pubDate>Wed, 13 Sep 2006 01:35:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:751207</guid><dc:creator>blog.virgule.info</dc:creator><description>Quelques articles rcents que tout dveloppeur web devrait lire...</description></item><item><title>Map the Maps!  &amp;raquo; Blog Archive   &amp;raquo; IE7 bien plus performant en Javascript - aussi bien que Firefox 1.5!</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#754015</link><pubDate>Thu, 14 Sep 2006 16:27:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:754015</guid><dc:creator>Map the Maps!  » Blog Archive   » IE7 bien plus performant en Javascript - aussi bien que Firefox 1.5!</dc:creator><description>PingBack from &lt;a rel="nofollow" target="_new" href="http://www.mapthemaps.com/blog/?p=19"&gt;http://www.mapthemaps.com/blog/?p=19&lt;/a&gt;</description></item><item><title>Hello World!</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#756146</link><pubDate>Fri, 15 Sep 2006 19:32:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:756146</guid><dc:creator>Kaushik's JavaScript Weblog</dc:creator><description>My name is Kaushik. I am a developer on the JavaScript team at Microsoft. &lt;br&gt;I’ll be blogging mostly about...</description></item><item><title>Points of interest #4</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#756504</link><pubDate>Fri, 15 Sep 2006 23:50:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:756504</guid><dc:creator>John Mandia</dc:creator><description>End of the week points of interest:New York Times are working on a WPF tool to improve readability :</description></item><item><title>ScriptTeaser  &amp;raquo; Blog Archive   &amp;raquo; Script Optimization</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#757828</link><pubDate>Sat, 16 Sep 2006 19:46:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:757828</guid><dc:creator>ScriptTeaser  » Blog Archive   » Script Optimization</dc:creator><description>PingBack from &lt;a rel="nofollow" target="_new" href="http://scriptteaser.com/learningjavascript/script-optimization/"&gt;http://scriptteaser.com/learningjavascript/script-optimization/&lt;/a&gt;</description></item><item><title> 
		 Microsoft JavaScript Perf. Tips &gt;   Archives   &gt; Web 2.0 Stores 		</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#758147</link><pubDate>Sun, 17 Sep 2006 00:33:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:758147</guid><dc:creator> 
		 Microsoft JavaScript Perf. Tips &gt;   Archives   &gt; Web 2.0 Stores 		</dc:creator><description>PingBack from &lt;a rel="nofollow" target="_new" href="http://web2.0stores.com/blog/archives/microsoft-javascript-perf-tips/"&gt;http://web2.0stores.com/blog/archives/microsoft-javascript-perf-tips/&lt;/a&gt;</description></item><item><title>???????? ??????????????????????????  &amp;raquo; Blog Archive   &amp;raquo; Java Script Performance Recommendations</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#761562</link><pubDate>Tue, 19 Sep 2006 08:16:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:761562</guid><dc:creator>???????? ??????????????????????????  » Blog Archive   » Java Script Performance Recommendations</dc:creator><description>PingBack from &lt;a rel="nofollow" target="_new" href="http://globallist.ru/?p=10"&gt;http://globallist.ru/?p=10&lt;/a&gt;</description></item><item><title>Ajax Links</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#762227</link><pubDate>Tue, 19 Sep 2006 19:19:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:762227</guid><dc:creator>Stuart Jones Weblog</dc:creator><description>Here are some websites that I referenced during my Ajax talk as well as other sites that provide useful...</description></item><item><title>Ajax Links</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#762517</link><pubDate>Tue, 19 Sep 2006 23:34:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:762517</guid><dc:creator>Stuart Jones Weblog</dc:creator><description>Here are some websites that I referenced during my Ajax talk as well as other sites that provide useful...</description></item><item><title>  IE7 JavaScript Improvements - The Web Standards Project</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#764705</link><pubDate>Thu, 21 Sep 2006 18:09:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:764705</guid><dc:creator>  IE7 JavaScript Improvements - The Web Standards Project</dc:creator><description>PingBack from &lt;a rel="nofollow" target="_new" href="http://www.webstandards.org/2006/09/21/ie7-javascript-improvements/"&gt;http://www.webstandards.org/2006/09/21/ie7-javascript-improvements/&lt;/a&gt;</description></item><item><title>Dijital World &amp;raquo; Notes on the interaction of ClearType with DXTransforms in IE7</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#777135</link><pubDate>Fri, 29 Sep 2006 20:20:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:777135</guid><dc:creator>Dijital World » Notes on the interaction of ClearType with DXTransforms in IE7</dc:creator><description>PingBack from &lt;a rel="nofollow" target="_new" href="http://www.aesjkt.com/wp/?p=1801"&gt;http://www.aesjkt.com/wp/?p=1801&lt;/a&gt;</description></item><item><title>Dijital World &amp;raquo; IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#777142</link><pubDate>Fri, 29 Sep 2006 20:23:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:777142</guid><dc:creator>Dijital World » IE + JavaScript Performance Recommendations - Part 1</dc:creator><description>PingBack from &lt;a rel="nofollow" target="_new" href="http://www.aesjkt.com/wp/?p=1808"&gt;http://www.aesjkt.com/wp/?p=1808&lt;/a&gt;</description></item><item><title>Zen Thoughts : IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#780415</link><pubDate>Mon, 02 Oct 2006 08:09:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:780415</guid><dc:creator>Zen Thoughts : IE + JavaScript Performance Recommendations - Part 1</dc:creator><description>PingBack from &lt;a rel="nofollow" target="_new" href="http://www.zhen.org/blog/?p=202"&gt;http://www.zhen.org/blog/?p=202&lt;/a&gt;</description></item><item><title>IrishDeveloper.com  &amp;raquo; Blog Archive   &amp;raquo; Javascript performance tips from the IE7 folks</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#796561</link><pubDate>Fri, 06 Oct 2006 18:17:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:796561</guid><dc:creator>IrishDeveloper.com  » Blog Archive   » Javascript performance tips from the IE7 folks</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://www.irishdeveloper.com/ie7/javascript-performance-tips-from-the-ie7-folks/"&gt;http://www.irishdeveloper.com/ie7/javascript-performance-tips-from-the-ie7-folks/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Jim Zimmerman - How to make your javascript run faster in IE</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#799548</link><pubDate>Sat, 07 Oct 2006 09:26:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:799548</guid><dc:creator>Jim Zimmerman - How to make your javascript run faster in IE</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://www.jimzimmerman.com/DasBlog/2006/08/29/How+To+Make+Your+Javascript+Run+Faster+In+IE.aspx"&gt;http://www.jimzimmerman.com/DasBlog/2006/08/29/How+To+Make+Your+Javascript+Run+Faster+In+IE.aspx&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Fat agnus  &amp;raquo; Blog Archive   &amp;raquo; While we wait for Firefox 2 and IE7</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#813764</link><pubDate>Tue, 10 Oct 2006 21:24:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:813764</guid><dc:creator>Fat agnus  » Blog Archive   » While we wait for Firefox 2 and IE7</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://fatagnus.com/while-we-wait-for-firefox-2-and-ie7"&gt;http://fatagnus.com/while-we-wait-for-firefox-2-and-ie7&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>??????????????? v2  &amp;raquo; Blog Archive   &amp;raquo; [??????]060714 ~ 060909 ??? keep new</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#900094</link><pubDate>Mon, 30 Oct 2006 04:47:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:900094</guid><dc:creator>??????????????? v2  » Blog Archive   » [??????]060714 ~ 060909 ??? keep new</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://blog.flymok.net/2006-09-10/167"&gt;http://blog.flymok.net/2006-09-10/167&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>IE+JavaScript Performance Recommendations Part 2: JavaScript Code Inefficiencies</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1089237</link><pubDate>Fri, 17 Nov 2006 01:36:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1089237</guid><dc:creator>IEBlog</dc:creator><description>&lt;p&gt;Hello again, this is Peter Gurevich, Performance PM for IE. We have gotten a lot of good feedback from&lt;/p&gt;
</description></item><item><title>JavaScript performance - access to global variables [part 1]</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1094158</link><pubDate>Fri, 17 Nov 2006 18:11:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1094158</guid><dc:creator>Ajax.NET Professional - AJAX and JSON made easy!</dc:creator><description>&lt;p&gt;While reading several posts about JavaScript performance [ 1 ] [ 2 ] I did a simple test, too. My first&lt;/p&gt;
</description></item><item><title>simple singularities &amp;raquo; javascript optimization</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1097429</link><pubDate>Sat, 18 Nov 2006 04:00:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1097429</guid><dc:creator>simple singularities » javascript optimization</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://fri13th.com/blog/archives/209"&gt;http://fri13th.com/blog/archives/209&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>References &amp;laquo; Tree Menu Development</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1116135</link><pubDate>Tue, 21 Nov 2006 19:55:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1116135</guid><dc:creator>References « Tree Menu Development</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://dmtreemenu.wordpress.com/2006/11/18/references/"&gt;http://dmtreemenu.wordpress.com/2006/11/18/references/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Crisp&amp;#8217;s blog  &amp;raquo; Blog Archive   &amp;raquo; Beware of premature optimization</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1167814</link><pubDate>Wed, 29 Nov 2006 01:15:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1167814</guid><dc:creator>Crisp’s blog  » Blog Archive   » Beware of premature optimization</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://therealcrisp.xs4all.nl/blog/2006/11/28/beware-of-premature-optimization/"&gt;http://therealcrisp.xs4all.nl/blog/2006/11/28/beware-of-premature-optimization/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Compression et obfuscation des fichiers JavaScript avec Atlas</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1313107</link><pubDate>Mon, 18 Dec 2006 02:44:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1313107</guid><dc:creator>Atteint de Javascriptite aigüe</dc:creator><description>&lt;p&gt;Lorsque j'avais examin&amp;#233;&amp;#160;les fichiers JavaScript&amp;#160;de Microsoft Ajax Extensions beta 1 une question m'&amp;#233;tait&lt;/p&gt;
</description></item><item><title>Responses for Benchmark Anomalies Noted by our Community Members!</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1405204</link><pubDate>Wed, 03 Jan 2007 20:12:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1405204</guid><dc:creator>Justin Rogers [MSFT]</dc:creator><description>&lt;p&gt;@Tino&lt;/p&gt;
&lt;p&gt;I'd like to respond to Tino's comments on some of the optimizations. Yes, we know that in some cases the optimizations aren't optimal for other browsers. We are trying to provide insight in to making IE faster and each of these samples has not been fully tested in FireFox or Opera. With that in mind, lets take a quick look at the three benchmarks that were performed which contradict the article.&lt;/p&gt;
&lt;p&gt;Your first benchmark is spot on. Your scenario was much simpler than most. There was nothing polluting the global namespace and there was only a single level of scope. So caching global function pointers in your sample produced a slower result. When you are looking at much larger sites, or mash-ups, where script is pulled in from many sources then the caching of script engine based function pointers begins to win. If you add in deep scope chains, caching the global function pointer also begins to be faster. We know that the performance gain in this space is minimal. Our main recommendation is to cache DOM function pointers, which I'll explain next.&lt;/p&gt;
&lt;p&gt;Your second benchmark points out DOM function pointers as coming out slower. This is not the case. A DOM method call from the script engine requires a name to ID look-up, followed by an invoke using that ID. When you've cached the method we wrap it in a special function object that already knows the ID to invoke on and so it performs a quicker invoke, by about 15%. I believe your scenario may have fallen prey to the operations being performed. At the end of this comment I've added a code sample that shows getElementById (caching this function) to be faster by about 15%. Please feel free to run the numbers by yourself. Note, care was taken not to allow the JavaScript GC and other functionality of the system to affect the timing of the calls. The sample where many text nodes were being created and appended falls prey to these systems and provides inaccurate results.&lt;/p&gt;
&lt;p&gt;@AnonL&lt;/p&gt;
&lt;p&gt;You had some script where you attached a JScript function as an expando on a DOM element. Then you cached this guy off to use it. This is a perfect example of when caching really comes in for a huge win. Glad you pointed it out. It is a shame that all of the combinations of different types of objects being shared between IE and the JScript have different performance. This is a by-product of supporting any IActiveScript language. After all, IE does work perfectly well with PerlScript, VBScript, PythonScript, and many other script engines today and so a lot of code remains to support those engines.&lt;/p&gt;
&lt;p&gt;Someone noted that an enumerator on top of a cached DOM function would result in a crash. You'll be happy to know that this was fixed in IE 7.&lt;/p&gt;
&lt;p&gt;@Code Sample for cached DOM function pointer benchmark - Note: Tested on IE 7 to be about 15% faster.&lt;/p&gt;
&lt;p&gt;&amp;lt;script&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;function bench1()&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var s = new Date().getTime();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var i = 25000;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while (i--)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;document.getElementById('foo');&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var e = new Date().getTime();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert (e-s);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;function bench2()&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var s = new Date().getTime();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var func = document.getElementById;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var i = 25000;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while (i--)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;func('foo');&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var e = new Date().getTime();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert (e-s);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;button onclick=&amp;quot;bench1();&amp;quot;&amp;gt;Bench 1&amp;lt;/button&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;button onclick=&amp;quot;bench2();&amp;quot;&amp;gt;Bench 2&amp;lt;/button&amp;gt;&lt;/p&gt;
</description></item><item><title>IE+JScript Performance Recommendations Part 3: JavaScript Code Inefficiencies</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1412423</link><pubDate>Thu, 04 Jan 2007 23:03:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1412423</guid><dc:creator>IEBlog</dc:creator><description>&lt;p&gt;Hello again, this is Peter Gurevich, Performance PM for IE. We have gotten a lot of good feedback from&lt;/p&gt;
</description></item><item><title>Notes on the interaction of ClearType with DXTransforms in IE7</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1450073</link><pubDate>Thu, 11 Jan 2007 13:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1450073</guid><dc:creator>Notes on the interaction of ClearType with DXTransforms in IE7</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://www.anasayfa.org/wp/?p=2560"&gt;http://www.anasayfa.org/wp/?p=2560&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Some JavaScript Links To Chew On</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1481587</link><pubDate>Wed, 17 Jan 2007 08:02:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1481587</guid><dc:creator>K. Scott Allen</dc:creator><description>&lt;p&gt;I've flagged a few links to noteworthy JavaScript posts over the last month. Yahoo! Video: Advanced...&lt;/p&gt;
</description></item><item><title>Some JavaScript Links To Chew On</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1481636</link><pubDate>Wed, 17 Jan 2007 08:23:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1481636</guid><dc:creator>Mirror blog entries from the industry</dc:creator><description>&lt;p&gt;I've flagged a few links to noteworthy JavaScript posts over the last month. Yahoo! Video: Advanced JavaScript&lt;/p&gt;
</description></item><item><title>Write better JScript code to execute within Internet Explorer (IE)</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1521847</link><pubDate>Wed, 24 Jan 2007 17:43:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1521847</guid><dc:creator>JScript Team Blog</dc:creator><description>&lt;p&gt;This is the first ever blog written by me in my entire life time. Let me take some time to introduce&lt;/p&gt;
</description></item><item><title>Learning the World  &amp;raquo; Website Performance Tweaks</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1531633</link><pubDate>Fri, 26 Jan 2007 00:39:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1531633</guid><dc:creator>Learning the World  » Website Performance Tweaks</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://learningtheworld.eu/2007/performance/"&gt;http://learningtheworld.eu/2007/performance/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>LeoTech  &amp;raquo; Blog Archive   &amp;raquo; Javascript Smorgasboard</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1629563</link><pubDate>Thu, 08 Feb 2007 23:42:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1629563</guid><dc:creator>LeoTech  » Blog Archive   » Javascript Smorgasboard</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://lpetr.org/blog/archives/javascript-smorgasboard"&gt;http://lpetr.org/blog/archives/javascript-smorgasboard&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>IE und JavaScript Performance Empfehlungen</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1660337</link><pubDate>Mon, 12 Feb 2007 14:58:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1660337</guid><dc:creator>&lt;dw:daniel_walzenbach runat="server" /&gt;</dc:creator><description>&lt;p&gt;Peter Gurevich, Performance Programm Manager des IE7 Teams, hat seine dreiteilige Serie zu o.g. Thema&lt;/p&gt;
</description></item><item><title>IE + JavaScript Performance Recommendations</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1667821</link><pubDate>Tue, 13 Feb 2007 12:12:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1667821</guid><dc:creator>Markus' Blog</dc:creator><description>&lt;p&gt;IE + JavaScript Performance Recommendations von Peter Gurevich, Programm Manager IE7 IE + JavaScript&lt;/p&gt;
</description></item><item><title>The Emotional Pumpkin &amp;raquo; Talking shop: IE and JavaScript performance</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1831347</link><pubDate>Thu, 08 Mar 2007 02:09:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1831347</guid><dc:creator>The Emotional Pumpkin » Talking shop: IE and JavaScript performance</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://www.blogs.ravasthi.name/tepumpkin/2007/03/07/talking-shop-ie-and-javascript-performance/"&gt;http://www.blogs.ravasthi.name/tepumpkin/2007/03/07/talking-shop-ie-and-javascript-performance/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>NathanSwart.com  &amp;raquo; Blog Archive   &amp;raquo; links for 2007-03-16</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1891233</link><pubDate>Fri, 16 Mar 2007 05:17:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1891233</guid><dc:creator>NathanSwart.com  » Blog Archive   » links for 2007-03-16</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://nathanswart.com/2007/03/15/links-for-2007-03-16/"&gt;http://nathanswart.com/2007/03/15/links-for-2007-03-16/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Grokking JavaScript Variables &amp;laquo; The Curious Schemer</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#1919487</link><pubDate>Tue, 20 Mar 2007 16:27:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1919487</guid><dc:creator>Grokking JavaScript Variables « The Curious Schemer</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://rayfd.wordpress.com/2006/11/02/grokking-javascript-variables/"&gt;http://rayfd.wordpress.com/2006/11/02/grokking-javascript-variables/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>?????????????????? ????????????  &amp;raquo; Blog Archive   &amp;raquo; [JS] IE??? JavaScript ?????? ????????? ???</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#4951628</link><pubDate>Mon, 17 Sep 2007 09:43:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4951628</guid><dc:creator>?????????????????? ????????????  » Blog Archive   » [JS] IE??? JavaScript ?????? ????????? ???</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://mygony.com/archives/1184"&gt;http://mygony.com/archives/1184&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Fine Art &amp;raquo; IEBlog : IE + JavaScript Performance Recommendations - Part 1</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#5153095</link><pubDate>Thu, 27 Sep 2007 00:46:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5153095</guid><dc:creator>Fine Art » IEBlog : IE + JavaScript Performance Recommendations - Part 1</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://fineartz.info/ieblog-ie-javascript-performance-recommendations-part-1/"&gt;http://fineartz.info/ieblog-ie-javascript-performance-recommendations-part-1/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Improve JavaScript performance</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#5414390</link><pubDate>Fri, 12 Oct 2007 07:50:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5414390</guid><dc:creator>Improve JavaScript performance</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://efficienttips.com/improve-javascript-performance/"&gt;http://efficienttips.com/improve-javascript-performance/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Optimiser vos boucle for avec JavaScript</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#6783234</link><pubDate>Sun, 16 Dec 2007 18:04:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6783234</guid><dc:creator>Atteint de Javascriptite aiguë [Cyril DURAND]</dc:creator><description>&lt;p&gt;JavaScript est un langage &amp;quot; late binded &amp;quot; c'est &amp;#224; dire que chaque appel d'une propri&amp;#233;t&amp;#233; aura un coup&lt;/p&gt;
</description></item><item><title>Optimiser vos boucle for avec JavaScript</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#6783353</link><pubDate>Sun, 16 Dec 2007 18:41:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6783353</guid><dc:creator>Atteint de Javascriptite aiguë [Cyril DURAND]</dc:creator><description>&lt;p&gt;JavaScript est un langage &amp;quot; late binded &amp;quot; c'est &amp;#224; dire que chaque appel d'une propri&amp;#233;t&amp;#233; aura un co&amp;#251;t&lt;/p&gt;
</description></item><item><title>Ron Cundiff, on IIS7, and other Web Development Best Practices</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#7134324</link><pubDate>Wed, 16 Jan 2008 23:20:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7134324</guid><dc:creator>Out Of The Box</dc:creator><description>&lt;p&gt;Last night, Ron presented to the Memphis .NET Users Group .&amp;amp;#160; The talk began with the improved administrative&lt;/p&gt;
</description></item><item><title>Ron Cundiff, on IIS7, and other Web Development Best Practices</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#7134744</link><pubDate>Thu, 17 Jan 2008 00:10:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7134744</guid><dc:creator>Noticias externas</dc:creator><description>&lt;p&gt;Last night, Ron presented to the Memphis .NET Users Group .&amp;amp;#160; The talk began with the improved administrative&lt;/p&gt;
</description></item><item><title>MSDN Blog Postings  &amp;raquo; Profiling JavaScript With Ajax View Tool: Spot Poor Performance Client Script In No Time</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#7140069</link><pubDate>Thu, 17 Jan 2008 08:44:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7140069</guid><dc:creator>MSDN Blog Postings  » Profiling JavaScript With Ajax View Tool: Spot Poor Performance Client Script In No Time</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://msdnrss.thecoderblogs.com/2008/01/17/profiling-javascript-with-ajax-view-tool-spot-poor-performance-client-script-in-no-time/"&gt;http://msdnrss.thecoderblogs.com/2008/01/17/profiling-javascript-with-ajax-view-tool-spot-poor-performance-client-script-in-no-time/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Mellow Morning &amp;raquo; Javascript optimization - high performance JS apps</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#8518440</link><pubDate>Sun, 18 May 2008 22:49:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8518440</guid><dc:creator>Mellow Morning &amp;raquo; Javascript optimization - high performance JS apps</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://www.mellowmorning.com/2008/05/18/javascript-optimization-high-performance-js-apps/"&gt;http://www.mellowmorning.com/2008/05/18/javascript-optimization-high-performance-js-apps/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>JEDI  &amp;raquo; Blog Archive   &amp;raquo; Is your Jquery or Javascript getting Slow or bad Performance ?</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#8994223</link><pubDate>Fri, 10 Oct 2008 16:09:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8994223</guid><dc:creator>JEDI  &amp;raquo; Blog Archive   &amp;raquo; Is your Jquery or Javascript getting Slow or bad Performance ?</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://www.jedi.be/blog/2008/10/10/is-your-jquery-or-javascript-getting-slow-or-bad-performance/"&gt;http://www.jedi.be/blog/2008/10/10/is-your-jquery-or-javascript-getting-slow-or-bad-performance/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>JEDI  &amp;raquo; Blog Archive   &amp;raquo; Is your Jquery or Javascript getting Slow or bad Performance ?</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#8994224</link><pubDate>Fri, 10 Oct 2008 16:09:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8994224</guid><dc:creator>JEDI  &amp;raquo; Blog Archive   &amp;raquo; Is your Jquery or Javascript getting Slow or bad Performance ?</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://www.jedi.be/blog/2008/10/10/is-your-jquery-or-javascript-getting-slow-or-bad-performance/"&gt;http://www.jedi.be/blog/2008/10/10/is-your-jquery-or-javascript-getting-slow-or-bad-performance/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>AJAX Performance Bestpractices</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#9132283</link><pubDate>Sat, 22 Nov 2008 00:01:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9132283</guid><dc:creator>Gaurav Seth's WebLog</dc:creator><description>&lt;p&gt;Recently someone asked me about the best practices for AJAX performance. Though this information is scattered&lt;/p&gt;
</description></item><item><title>Do only what matters: Javascript Articles</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#9132504</link><pubDate>Sat, 22 Nov 2008 05:10:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9132504</guid><dc:creator>Do only what matters: Javascript Articles</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://khaidoan.wikidot.com/javascript-articles"&gt;http://khaidoan.wikidot.com/javascript-articles&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>JavaScript?????????????????? | ????????????</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#9360862</link><pubDate>Thu, 22 Jan 2009 04:00:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9360862</guid><dc:creator>JavaScript?????????????????? | ????????????</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://qingbo.org/archives/577.html"&gt;http://qingbo.org/archives/577.html&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>MS radzi jak pisac wydajny JScript dla IE - jak to sie ma do JavaScriptu i przegl?darek? | hilpers</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#9372053</link><pubDate>Fri, 23 Jan 2009 06:47:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9372053</guid><dc:creator>MS radzi jak pisac wydajny JScript dla IE - jak to sie ma do JavaScriptu i przegl?darek? | hilpers</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://www.hilpers.pl/232781-ms-radzi-jak-pisac-wydajny"&gt;http://www.hilpers.pl/232781-ms-radzi-jak-pisac-wydajny&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>JavaScript profiling in Internet Explorer &amp;laquo; Really Aced</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#9462416</link><pubDate>Fri, 06 Mar 2009 14:26:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9462416</guid><dc:creator>JavaScript profiling in Internet Explorer &amp;laquo; Really Aced</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://reallyaced.wordpress.com/2009/03/06/javascript-profiling-in-internet-explorer/"&gt;http://reallyaced.wordpress.com/2009/03/06/javascript-profiling-in-internet-explorer/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Coding style  &amp;raquo; Blog Archive   &amp;raquo; Quelques optimisations en JS</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#9521753</link><pubDate>Tue, 31 Mar 2009 10:04:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9521753</guid><dc:creator>Coding style  &amp;raquo; Blog Archive   &amp;raquo; Quelques optimisations en JS</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://www.codingstyle.fr/2009/03/26/quelques-optimisations-en-js/"&gt;http://www.codingstyle.fr/2009/03/26/quelques-optimisations-en-js/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Web Development Tips, Tricks &amp;amp; Trivia  &amp;raquo; Blog Archive   &amp;raquo; HOW TO improve the front-end performance of a website</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#9644307</link><pubDate>Wed, 27 May 2009 14:28:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9644307</guid><dc:creator>Web Development Tips, Tricks &amp;amp; Trivia  &amp;raquo; Blog Archive   &amp;raquo; HOW TO improve the front-end performance of a website</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://webdevelopment.mobiforumz.com/2008/01/02/how-to-improve-the-front-end-performance-of-a-website/"&gt;http://webdevelopment.mobiforumz.com/2008/01/02/how-to-improve-the-front-end-performance-of-a-website/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title> IEBlog IE JavaScript Performance Recommendations Part 1 | Paid Surveys</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#9656173</link><pubDate>Fri, 29 May 2009 22:17:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9656173</guid><dc:creator> IEBlog IE JavaScript Performance Recommendations Part 1 | Paid Surveys</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://paidsurveyshub.info/story.php?title=ieblog-ie-javascript-performance-recommendations-part-1"&gt;http://paidsurveyshub.info/story.php?title=ieblog-ie-javascript-performance-recommendations-part-1&lt;/a&gt;&lt;/p&gt;
</description></item><item><title> IEBlog IE JavaScript Performance Recommendations Part 1 | Wood TV Stand</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#9688170</link><pubDate>Wed, 03 Jun 2009 03:23:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9688170</guid><dc:creator> IEBlog IE JavaScript Performance Recommendations Part 1 | Wood TV Stand</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://woodtvstand.info/story.php?id=84076"&gt;http://woodtvstand.info/story.php?id=84076&lt;/a&gt;&lt;/p&gt;
</description></item><item><title> IEBlog IE JavaScript Performance Recommendations Part 1 |  Portable Greenhouse</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#9690077</link><pubDate>Wed, 03 Jun 2009 11:11:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9690077</guid><dc:creator> IEBlog IE JavaScript Performance Recommendations Part 1 |  Portable Greenhouse</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://portablegreenhousesite.info/story.php?id=31938"&gt;http://portablegreenhousesite.info/story.php?id=31938&lt;/a&gt;&lt;/p&gt;
</description></item><item><title> IEBlog IE JavaScript Performance Recommendations Part 1 | Weak Bladder</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#9705401</link><pubDate>Mon, 08 Jun 2009 04:21:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9705401</guid><dc:creator> IEBlog IE JavaScript Performance Recommendations Part 1 | Weak Bladder</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://weakbladder.info/story.php?id=6263"&gt;http://weakbladder.info/story.php?id=6263&lt;/a&gt;&lt;/p&gt;
</description></item><item><title> IEBlog IE JavaScript Performance Recommendations Part 1 | Green Tea Fat Burner</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#9706720</link><pubDate>Mon, 08 Jun 2009 05:28:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9706720</guid><dc:creator> IEBlog IE JavaScript Performance Recommendations Part 1 | Green Tea Fat Burner</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://greenteafatburner.info/story.php?id=1217"&gt;http://greenteafatburner.info/story.php?id=1217&lt;/a&gt;&lt;/p&gt;
</description></item><item><title> IEBlog IE JavaScript Performance Recommendations Part 1 | Outdoor Decor</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#9746365</link><pubDate>Sun, 14 Jun 2009 01:11:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9746365</guid><dc:creator> IEBlog IE JavaScript Performance Recommendations Part 1 | Outdoor Decor</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://outdoordecoration.info/story.php?id=3282"&gt;http://outdoordecoration.info/story.php?id=3282&lt;/a&gt;&lt;/p&gt;
</description></item><item><title> IEBlog IE JavaScript Performance Recommendations Part 1 | alternative dating</title><link>http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx#9767966</link><pubDate>Wed, 17 Jun 2009 10:32:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9767966</guid><dc:creator> IEBlog IE JavaScript Performance Recommendations Part 1 | alternative dating</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://topalternativedating.info/story.php?id=7296"&gt;http://topalternativedating.info/story.php?id=7296&lt;/a&gt;&lt;/p&gt;
</description></item></channel></rss>