<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jake Kasprzak Online &#187; Google Chrome</title>
	<atom:link href="http://jake.kasprzak.ca/category/google/google-chrome/feed/" rel="self" type="application/rss+xml" />
	<link>http://jake.kasprzak.ca</link>
	<description>Software > Open Source Development > Mozilla > Firefox > Greasemonkey > Scripting/Coding</description>
	<lastBuildDate>Thu, 24 Dec 2009 17:57:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>DNS Prefetching and the SPDY Protocol: Attempts by Google to Make Web Browsing More Efficient</title>
		<link>http://jake.kasprzak.ca/2009/12/07/dns-prefetching-and-the-spdy-protocol-attempts-by-google-to-make-web-browsing-more-efficient/</link>
		<comments>http://jake.kasprzak.ca/2009/12/07/dns-prefetching-and-the-spdy-protocol-attempts-by-google-to-make-web-browsing-more-efficient/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 04:53:05 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Chrome]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=817</guid>
		<description><![CDATA[To follow up on the previous entry that I wrote here, I considered writing about DNS prefetching in the Google Chrome web browser. After writing about Chrome&#8217;s JavaScript performance, I thought it might be appropriate to mention that web pages may appear more quickly in Chrome when DNS prefetching is enabled in it. It was [...]]]></description>
			<content:encoded><![CDATA[<p>To follow up on the previous entry that I wrote here, I considered writing about DNS prefetching in the Google Chrome web browser. After writing about Chrome&#8217;s JavaScript performance, I thought it might be appropriate to mention that web pages may appear more quickly in Chrome when DNS prefetching is enabled in it. It was claimed in <a href="http://blog.chromium.org/2008/09/dns-prefetching-or-pre-resolving.html">this blog post that when domains are first visited in Chrome, 250 ms are saved on average when DNS prefetching is used</a>. I thought that DNS prefetching in Chrome was a topic that I should cover, even though that topic had already been discussed elsewhere when Chrome was first released over a year ago. However, it was <a href="http://blog.chromium.org/2009/11/2x-faster-web.html">recently announced that Google was going beyond work on a browser to make web pages appear in browsers more quickly</a>. In this entry, I will also write about <a href="http://dev.chromium.org/spdy/spdy-whitepaper">the protocol called SPDY</a> that Google has created to address HTTP&#8217;s inefficiencies. </p>
<p>When considering ways to make web pages appear more quickly in browsers, one needs to consider everything that occurs when a user visits a web page. It might seem to be a good idea to retrieve the IP addresses associated with the domains to which users may navigate next in advance. When this is done, then the time it takes for web pages to appear should decrease. One can see how much faster pages appear when DNS prefetching is used in Chrome after entering &#8220;about:dns&#8221; into the address bar in Chrome. After viewing that page, one will be able to see which hostnames had benefits produced as a result of this prefetching. I found this information quite interesting. So I used <a href="http://www.wireshark.org/">the packet sniffer named Wireshark</a> to view network traffic with DNS prefetching off, and then I viewed network traffic with it on. There are many pages with many links on them that one can view with DNS prefetching off and then with it on. I personally experimented with viewing <a href="http://www.slashdot.org">Slashdot</a> with this off, and found it interesting to see how much more DNS traffic there was when I refreshed the page with it on. </p>
<p>In theory, and according to tests run by Google, DNS prefetching leads to more efficient web browsing. However, when viewing DNS traffic using a sniffer such as Wireshark, one can get an idea how this can have the opposite effect on web browsing. When there are many links on a page, the majority of them may not ever be clicked by users who view these pages. In fact, it is said in <a href="http://www.mydigitallife.info/2009/11/17/turn-off-dns-prefetching-in-google-chrome-to-fix-resolving-host-and-cannot-load-page-error/">this blog entry that DNS prefetching can lead to the browser spending much time resolving hostnames</a>. It is also said in that entry that incorrect implementation of DNS caching or prefetching or other related errors can lead to web pages not appearing at all. It is suggested there that DNS prefetching be disabled, although I would like to note that I have never encountered issues such as these in the time that I have used Chrome. It should be mentioned that disabling of DNS prefetching tends to be considered a good idea when Chrome seems to be running slowly. When one <a href="http://www.google.com/support/chrome/bin/search.py?hl=en&#038;forum=1&#038;query=dns+prefetching+more:forum">searches for information on DNS prefetching</a> on the <a href="http://www.google.com/support/chrome/">help forum for Chrome</a>, one will see that disabling of DNS prefetching is a common suggestion there. Although some may have found that browser speed issues are worse when this prefetching is disabled, the goal of reduced perceived latency when DNS prefetching is used might not have been attained by Google.</p>
<p>Of course, ideas that may seem good in theory may not always be good in practice. DNS prefetching can be considered an example of such an idea. One must appreciate the efforts that Google is making to improve the web browsing experience for users. There most certainly is room for improvement in the way that the web works, and Google has recognized this. Some of this room for improvement came as a result of the nature of the web changing, and so Google is trying to keep up with changing times. This is what led them to try to improve on HTTP.</p>
<p>When HTTP was first designed, it was made for a web that consisted of single pages, and one in which fewer files were sent from a server to a client. Now that many files are sent to users when they load web pages, this would not suffice. HTTP 1.1 supports sending several requests before replies arrive, in what is known as pipelining. However, pipelining may not be very advantageous, as HTTP 1.1 requires that replies to requests be returned in order. The server must spend extra time processing incoming packets to determine the order in which packets must be sent. Some might also see how sending several requests at once and requiring the server to process them can lead to denial-of-service attacks. This is all explained well in <a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/04/02/http-pipelining-a-security-risk-without-real-performance-benefits.aspx">this blog post</a>. </p>
<p>SPDY addresses issues that HTTP has in a number of ways. In addition to its ability to send several requests over one TCP connection, requests are prioritized. The client prioritizing requests leads to what is more important being sent to the browser first. Also, headers are compressed, which is appropriate as much redundant header data tends to be sent back and forth when HTTP is used. It is interesting to note that all SPDY traffic is encrypted. It was claimed that page load times were reduced by up to 64% when SPDY was tested. However, SPDY may have its drawbacks. As it says in <a href="http://arstechnica.com/web/news/2009/11/spdy-google-wants-to-speed-up-the-web-by-ditching-http.ars">this article on SPDY</a>, the amount of processing done in compression and encryption could lead to servers having to be upgraded. <a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/17/google-spdy-protocol-would-require-mass-change-in-infrastructure.aspx">This article describes changes that would need to be made on the server side in greater detail.</a></p>
<p>Google also recently <a href="http://googleblog.blogspot.com/2009/12/introducing-google-public-dns.html">announced the launch of a public DNS resolver</a> called <a href="http://code.google.com/speed/public-dns/">&#8220;Google Public DNS&#8221;</a> in another attempt to improve the web browsing experience for users. Google&#8217;s attempts at making web browsing more efficient may not work as well in practice as they do in theory. Nevertheless, one has to appreciate their efforts in updating the way in which browsers and protocols work to improve the efficiency of web browsing.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/12/07/dns-prefetching-and-the-spdy-protocol-attempts-by-google-to-make-web-browsing-more-efficient/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Benchmarking of JavaScript Performance: Firefox 3.5 vs. Google Chrome 3.0</title>
		<link>http://jake.kasprzak.ca/2009/11/16/benchmarking-of-javascript-performance-firefox-3-5-vs-google-chrome-3-0/</link>
		<comments>http://jake.kasprzak.ca/2009/11/16/benchmarking-of-javascript-performance-firefox-3-5-vs-google-chrome-3-0/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 03:53:55 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google Chrome]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=777</guid>
		<description><![CDATA[Many web pages and web applications rely on JavaScript. That is the reason JavaScript performance in web browsers tends to be considered a high priority by browser vendors. There may be other factors that affect browser performance, as browsers are not simply JavaScript engines. This was mentioned by a senior product manager on the Internet [...]]]></description>
			<content:encoded><![CDATA[<p>Many web pages and web applications rely on JavaScript. That is the reason JavaScript performance in web browsers tends to be considered a high priority by browser vendors. There may be other factors that affect browser performance, as browsers are not simply JavaScript engines. This was mentioned by a senior product manager on the Internet Explorer development team, as you can see in <a href="http://www.computerworld.com/s/article/9126940/IE8_RC1_gains_ground_in_JavaScript_race?taxonomyId=11">this Computerworld article in which the results of JavaScript benchmark tests on different web browsers are mentioned</a>. However, in that same article, it is said that Internet Explorer 8 Release Candidate 1 completed those same JavaScript benchmark tests four times faster than IE8 Beta 2 did. This seems to indicate that those working on Internet Explorer do consider JavaScript performance important. Since browser vendors consider JavaScript performance important, it is important that browsers do well on these benchmark tests. </p>
<p>There are three major JavaScript performance test suites, each of which were released by different browser vendors. Webkit released <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">SunSpider</a>, Mozilla released <a href="http://dromaeo.com/">Dromaeo</a>, and Google released the <a href="http://v8.googlecode.com/svn/data/benchmarks/v5/run.html">V8 benchmark</a>. As is often the case with benchmark tests, they may not necessarily accurately determine what performs best in the actual situations that they try to simulate. These JavaScript benchmark tests may have their flaws, some of which are still being addressed. Despite the flaws that JavaScript benchmarks may have, they can give an indication of how some JavaScript engines can be better than others. In the Computerworld article previously mentioned here, the SunSpider test suite was used to test the performance of the JavaScript engines of different browsers.</p>
<p>After I wrote about Google Chrome in the last entry here, I wanted to more precisely determine how much better it is at JavaScript performance than other browsers are. I considered running a few benchmark tests on a few different browsers. However, that has already been done many times by others. One can view results of such tests in the Computerworld article to which I previously posted a link, and <a href="http://ejohn.org/blog/javascript-performance-rundown/">here</a>. However, those tests were run before Firefox 3.5 was released, and JavaScript performance in Firefox 3.0 is not as good as it is in Firefox 3.5. In fact, according to what is on <a href="http://www.mozilla.com/en-US/firefox/performance/">this page on Firefox performance</a>, SunSpider tests indicate that JavaScript performance in Firefox 3.5 is twice as good as JavaScript performance in Firefox 3.0. I also wanted to run these tests myself. I ran the SunSpider benchmark tests using Firefox and Chrome, and found that the benchmark tests ran much faster in Chrome than they did in Firefox.</p>
<p>The SunSpider test suite is a comprehensive one that simulates situations that users will encounter when they browse the web, such as generation of tag clouds from JSON input. In running these tests, I ensured that I was using the latest versions of these web browsers. I also ensured that no other browser tabs were open when I ran these tests. I also created a new Firefox profile and used it to run the SunSpider tests on Firefox. I wanted to ensure that these test results would be as accurate as possible.</p>
<p>I found it interesting to see the mean times it took for the tests in the SunSpider suite to be completed. It was also interesting to see what the 95% confidence intervals were, which as some of those reading this may know, are used to determine with 95% certainty that true mean values are within those intervals. I viewed the source code on the SunSpider website to see how those values were calculated using a Student&#8217;s t-distribution, and was reminded of concepts that I learned about in a university statistics course. After running the tests three times with Google Chrome, the average time it took for the tests to be completed was 822.2 ms. I then ran the tests three times with Firefox, and the average time it took for the tests on Firefox to be completed was 1756.8 ms. Firefox took more than twice as long as Chrome to complete the suite of tests. One can verify this after viewing the results of the <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[41,85,48,47,49],%223d-morph%22:[48,46,37,38,36],%223d-raytrace%22:[44,42,41,42,42],%22access-binary-trees%22:[3,4,5,5,6],%22access-fannkuch%22:[20,51,20,19,18],%22access-nbody%22:[31,33,29,29,28],%22access-nsieve%22:[5,7,6,6,6],%22bitops-3bit-bits-in-byte%22:[4,4,3,4,4],%22bitops-bits-in-byte%22:[11,12,14,11,11],%22bitops-bitwise-and%22:[13,14,15,13,16],%22bitops-nsieve-bits%22:[24,53,21,21,21],%22controlflow-recursive%22:[3,4,4,4,4],%22crypto-aes%22:[20,64,19,17,18],%22crypto-md5%22:[15,21,15,16,19],%22crypto-sha1%22:[15,14,12,14,15],%22date-format-tofte%22:[51,94,48,48,47],%22date-format-xparb%22:[67,78,53,55,55],%22math-cordic%22:[26,25,25,26,26],%22math-partial-sums%22:[38,34,36,35,36],%22math-spectral-norm%22:[14,14,15,14,23],%22regexp-dna%22:[43,24,24,22,23],%22string-base64%22:[27,30,28,26,27],%22string-fasta%22:[37,37,36,38,37],%22string-tagcloud%22:[59,57,61,57,55],%22string-unpack-code%22:[88,84,84,87,82],%22string-validate-input%22:[67,50,51,50,95]}">first</a>, <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[39,36,86,48,40],%223d-morph%22:[50,37,49,42,39],%223d-raytrace%22:[45,40,41,41,41],%22access-binary-trees%22:[5,4,5,5,5],%22access-fannkuch%22:[19,19,33,18,19],%22access-nbody%22:[29,31,28,28,27],%22access-nsieve%22:[5,6,5,6,5],%22bitops-3bit-bits-in-byte%22:[4,4,4,4,4],%22bitops-bits-in-byte%22:[10,11,9,12,10],%22bitops-bitwise-and%22:[14,14,14,14,15],%22bitops-nsieve-bits%22:[22,21,37,22,22],%22controlflow-recursive%22:[4,3,4,4,4],%22crypto-aes%22:[20,18,18,16,17],%22crypto-md5%22:[14,15,15,14,14],%22crypto-sha1%22:[13,13,13,16,15],%22date-format-tofte%22:[57,48,48,49,48],%22date-format-xparb%22:[56,55,53,55,63],%22math-cordic%22:[28,25,26,26,25],%22math-partial-sums%22:[37,36,36,35,39],%22math-spectral-norm%22:[16,16,15,15,16],%22regexp-dna%22:[23,23,23,24,23],%22string-base64%22:[28,28,27,25,26],%22string-fasta%22:[38,37,38,36,37],%22string-tagcloud%22:[59,72,57,54,56],%22string-unpack-code%22:[92,99,92,81,82],%22string-validate-input%22:[68,142,92,95,93]}">second</a>, and <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[39,36,48,49,51],%223d-morph%22:[51,39,55,39,39],%223d-raytrace%22:[46,43,40,40,39],%22access-binary-trees%22:[5,4,6,7,3],%22access-fannkuch%22:[19,20,19,21,19],%22access-nbody%22:[30,32,42,29,27],%22access-nsieve%22:[5,7,6,8,6],%22bitops-3bit-bits-in-byte%22:[6,5,4,5,4],%22bitops-bits-in-byte%22:[10,10,25,10,10],%22bitops-bitwise-and%22:[15,15,29,19,17],%22bitops-nsieve-bits%22:[21,22,23,25,21],%22controlflow-recursive%22:[4,4,4,4,5],%22crypto-aes%22:[20,16,17,16,16],%22crypto-md5%22:[14,14,14,14,15],%22crypto-sha1%22:[11,14,13,14,14],%22date-format-tofte%22:[71,47,48,140,49],%22date-format-xparb%22:[51,52,55,85,62],%22math-cordic%22:[27,27,28,43,26],%22math-partial-sums%22:[37,36,35,50,35],%22math-spectral-norm%22:[14,14,14,16,14],%22regexp-dna%22:[24,23,24,23,23],%22string-base64%22:[27,26,26,30,28],%22string-fasta%22:[36,37,37,37,37],%22string-tagcloud%22:[58,120,54,57,56],%22string-unpack-code%22:[90,123,90,84,84],%22string-validate-input%22:[59,117,46,50,49]}">third</a> tests I ran with Chrome, and the results of the <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[69,74,72,72,72],%223d-morph%22:[126,123,123,123,123],%223d-raytrace%22:[124,122,122,122,121],%22access-binary-trees%22:[54,55,54,54,55],%22access-fannkuch%22:[102,101,101,102,102],%22access-nbody%22:[42,42,41,41,42],%22access-nsieve%22:[15,15,18,15,15],%22bitops-3bit-bits-in-byte%22:[1,2,1,2,2],%22bitops-bits-in-byte%22:[12,12,12,12,12],%22bitops-bitwise-and%22:[3,2,3,2,2],%22bitops-nsieve-bits%22:[37,34,34,34,34],%22controlflow-recursive%22:[49,48,49,48,49],%22crypto-aes%22:[53,54,58,55,53],%22crypto-md5%22:[25,25,24,25,25],%22crypto-sha1%22:[13,13,13,13,14],%22date-format-tofte%22:[141,140,139,140,142],%22date-format-xparb%22:[136,137,139,134,138],%22math-cordic%22:[55,53,53,53,52],%22math-partial-sums%22:[26,25,25,25,25],%22math-spectral-norm%22:[12,12,12,12,12],%22regexp-dna%22:[122,115,104,131,135],%22string-base64%22:[24,24,24,24,25],%22string-fasta%22:[107,106,107,108,109],%22string-tagcloud%22:[129,140,134,134,132],%22string-unpack-code%22:[211,205,206,204,218],%22string-validate-input%22:[56,60,69,68,59]}">first</a>, <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[71,71,71,71,71],%223d-morph%22:[122,123,130,124,124],%223d-raytrace%22:[123,121,122,122,122],%22access-binary-trees%22:[56,56,54,55,56],%22access-fannkuch%22:[99,101,102,103,104],%22access-nbody%22:[41,41,42,41,41],%22access-nsieve%22:[15,15,14,15,15],%22bitops-3bit-bits-in-byte%22:[1,2,1,2,2],%22bitops-bits-in-byte%22:[12,12,12,12,12],%22bitops-bitwise-and%22:[2,2,2,2,2],%22bitops-nsieve-bits%22:[35,35,37,34,34],%22controlflow-recursive%22:[51,49,48,49,48],%22crypto-aes%22:[54,56,54,53,53],%22crypto-md5%22:[25,25,25,25,25],%22crypto-sha1%22:[13,14,13,13,14],%22date-format-tofte%22:[141,146,143,146,145],%22date-format-xparb%22:[137,135,135,139,134],%22math-cordic%22:[53,54,53,52,53],%22math-partial-sums%22:[25,25,25,25,26],%22math-spectral-norm%22:[12,11,12,12,12],%22regexp-dna%22:[117,102,122,92,111],%22string-base64%22:[25,25,25,25,27],%22string-fasta%22:[105,107,107,107,123],%22string-tagcloud%22:[128,130,128,130,131],%22string-unpack-code%22:[207,205,207,213,254],%22string-validate-input%22:[59,56,69,58,68]}">second</a>, and <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[69,72,74,69,72],%223d-morph%22:[130,123,127,125,123],%223d-raytrace%22:[124,122,135,123,125],%22access-binary-trees%22:[53,56,57,59,54],%22access-fannkuch%22:[99,102,134,106,100],%22access-nbody%22:[42,42,44,42,41],%22access-nsieve%22:[15,15,15,16,15],%22bitops-3bit-bits-in-byte%22:[2,1,1,2,2],%22bitops-bits-in-byte%22:[12,12,12,12,12],%22bitops-bitwise-and%22:[2,2,3,2,3],%22bitops-nsieve-bits%22:[34,34,34,34,35],%22controlflow-recursive%22:[48,48,53,51,50],%22crypto-aes%22:[54,55,56,57,57],%22crypto-md5%22:[25,24,25,25,25],%22crypto-sha1%22:[13,14,13,13,14],%22date-format-tofte%22:[141,143,146,146,144],%22date-format-xparb%22:[136,146,138,137,135],%22math-cordic%22:[53,52,53,54,52],%22math-partial-sums%22:[25,26,25,25,25],%22math-spectral-norm%22:[11,12,12,12,12],%22regexp-dna%22:[99,110,121,104,122],%22string-base64%22:[25,25,25,25,25],%22string-fasta%22:[106,109,108,109,111],%22string-tagcloud%22:[127,163,132,129,127],%22string-unpack-code%22:[202,276,203,204,206],%22string-validate-input%22:[59,94,57,67,61]}">third</a> tests I ran with Firefox. One can also copy and paste URLs from one set of test results into a text box on a page that contains the other browser&#8217;s results to compare results.</p>
<p>As you may have seen if you have viewed the results of other JavaScript benchmark tests that have been posted on the web, they tend to list only the mean times it took to complete them. Confidence intervals are not mentioned in the Computerworld article that I previously mentioned. When one wants to see precisely how much faster one browser&#8217;s JavaScript engine is than another&#8217;s, one may want to take confidence intervals into account. However, in the tests that I ran, overall confidence intervals did not differ by a large percentage. The mean values and confidence intervals were similar for the three tests that were run on each browser. This gives a strong indication that Chrome&#8217;s JavaScript performance is significantly better than that of Firefox. </p>
<p>Google Chrome may outperform other browsers in JavaScript performance. However, Internet Explorer&#8217;s JavaScript performance is as good as Google Chrome&#8217;s when <a href="http://www.google.com/chromeframe">Google Chrome Frame</a> is used with it. According to <a href="http://www.computerworld.com/s/article/9138459/IE8_runs_10_times_faster_with_Google_plug_in">this other Computerworld article</a>, when Internet Explorer is used with Chrome&#8217;s JavaScript engine, its JavaScript performance is, understandably, much better. Once again, Computerworld used the SunSpider test suite to determine these JavaScript performance differences. Google Chrome&#8217;s JavaScript engine&#8217;s performance may be better than the performance of other JavaScript engines. It also appears that it will continue to be better than other JavaScript engines. In <a href="http://chrome.blogspot.com/2009/11/bookmark-sync-and-more-speed-in-latest.html">this post on the Google Chrome blog</a> it was said that JavaScript performance in its latest beta has increased by 30% since the last stable release of Google Chrome. </p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/11/16/benchmarking-of-javascript-performance-firefox-3-5-vs-google-chrome-3-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Explanations of What Makes Google Chrome Fast and Efficient</title>
		<link>http://jake.kasprzak.ca/2009/10/26/explanations-of-what-makes-google-chrome-fast-and-efficient/</link>
		<comments>http://jake.kasprzak.ca/2009/10/26/explanations-of-what-makes-google-chrome-fast-and-efficient/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 02:50:38 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Chrome]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=724</guid>
		<description><![CDATA[Ever since I started using Google Chrome, I have been very impressed with its speed. I wondered what it is about this web browser that makes it as fast and efficient as it is. I decided to do some research on what makes it faster than other browsers that I have used. I have read [...]]]></description>
			<content:encoded><![CDATA[<p>Ever since I started using Google Chrome, I have been very impressed with its speed. I wondered what it is about this web browser that makes it as fast and efficient as it is. I decided to do some research on what makes it faster than other browsers that I have used. I have read some explanations of the design decisions that make it stand out, and some of these explanations are better than others. After my positive review of <a href="http://www.moserware.com/2009/09/stick-figure-guide-to-advanced.html">A Stick Figure Guide to the Advanced Encryption Standard (AES)</a>, some may not be surprised to find that I consider the best <a href="http://www.google.com/googlebooks/chrome/index.html">explanation of what makes Google Chrome fast and efficient to be in the form of a comic book</a>.</p>
<p>After I read about what makes Google Chrome faster than other browsers, I have found that a few points tend to be mentioned consistently. It is often said that its use of <a href="http://webkit.org/">the Webkit open source web browser layout engine</a> and <a href="http://code.google.com/p/v8/">the open source JavaScript engine known as V8</a> set it apart. What it is about Webkit and V8 that make Google Chrome faster and more efficient is mentioned in a number of different places. And these explanations appear in a number of different forms, such as this video in which Lars Bak, the head programmer of the V8 project, explains the concepts behind V8.</p>
<p><object type="application/x-shockwave-flash" width="425" height="344" data="http://www.youtube.com/v/hWhMKalEicY&#038;hl=en&#038;fs=1&#038;"><param name="movie" value="http://www.youtube.com/v/hWhMKalEicY&#038;hl=en&#038;fs=1&#038;1" /><param name="wmode" value="transparent" /></object></p>
<p>Some might consider the explanation in that video useful. Others, who do not have as much knowledge of the topics that Bak explains, would prefer explanations that they would be more likely to understand. I personally wanted a thorough and complete explanation of what makes Google Chrome as fast and efficient as it is. What I had not realized was that I needed to look no further than <a href="http://www.google.com/chrome/intl/en/features.html">the page on Google that lists its features</a> for the link to the information that I wanted to find. This information may have been there for a long time, although it seems to continue to be the best introductory guide to the technology that makes Google Chrome different.</p>
<p>It seemed to be appropriate that the best guide to Google Chrome&#8217;s features came from those employed at Google. The differences in its user interface, security handling, and performance are covered in it. In this post, I will only focus on Google Chrome&#8217;s speed and efficiency. I may cover the user interface and security design decisions in a different post about Google Chrome. If I do, I may once again refer to this comic.</p>
<p>There is a section on Webkit and V8 in that comic in which important concepts about V8 are explained well. Webkit, which is also used by Safari, is said to manage memory well. It is said that Google Chrome is designed for the world wide web of today rather than the one that existed when browsers were first written. That is the reason it was said to be important that its JavaScript engine be efficient, considering how often JavaScript is used in web applications. The concept of hidden classes is covered well, and it is covered in enough detail for its intended audience to understand the basics of it. Those who would like a more detailed explanation of this concept may see it <a href="http://code.google.com/apis/v8/design.html">explained in further detail here</a>. Also, it is mentioned that JavaScript is compiled into machine code when V8 is used. As those familiar with advantages of compiled code over code that is interpreted as JavaScript typically is, this can lead to a significant performance increase. Also, as hidden classes are created, the machine code can refer to these hidden classes, which leads to better performance. In addition, V8&#8217;s method of garbage collection is very efficient, and it is explained how memory is managed much more efficiently than it is in other JavaScript engines.</p>
<p>The explanations in this comic seem to be aimed at an audience that has some knowledge of the concepts explained in it. I thought that those who want to know more about this technology would find it understandable and entertaining. Some might also understand jokes in it, such as the &#8220;speed limit&#8221; <a href="http://www.google.com/googlebooks/chrome/big_16.html">depicted on this panel</a> as being 10<sup>100</sup>, also known as a googol. Some might like this comic, some might not. For those who prefer to view a video that covers some of the same material, but in less depth, there is this video. </p>
<p><object type="application/x-shockwave-flash" width="425" height="344" data="http://www.youtube.com/v/JGmO7Oximw8&#038;hl=en&#038;fs=1&#038;"><param name="movie" value="http://www.youtube.com/v/JGmO7Oximw8&#038;hl=en&#038;fs=1&#038;"><param name="wmode" value="transparent" /></object></p>
<p>Some may find my recent praise for comics interesting. Some might also find it interesting that I am praising Google Chrome after writing much here about Firefox. I still use Firefox quite often, mostly because of its extensions. However, when I want to use a browser that is simple, fast, and efficient, I use Google Chrome.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/10/26/explanations-of-what-makes-google-chrome-fast-and-efficient/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
