{"id":1633,"date":"2011-02-08T11:49:33","date_gmt":"2011-02-08T10:49:33","guid":{"rendered":"http:\/\/glandium.org\/blog\/?p=1633"},"modified":"2011-02-08T11:49:33","modified_gmt":"2011-02-08T10:49:33","slug":"startup-io-how-do-3-6-and-4-0-compare","status":"publish","type":"post","link":"https:\/\/glandium.org\/blog\/?p=1633","title":{"rendered":"Startup I\/O: how do 3.6 and 4.0 compare?"},"content":{"rendered":"<p>During the past weeks, I've been posting a lot of data about what various changes can bring in terms of startup time improvement. It is now time to look back on how thing have changed between 3.6 and the upcoming 4.0.<\/p>\n<p>With the same setup I've <a href=\"\/blog\/?p=1607\">been<\/a> <a href=\"\/blog\/?p=1296\">using<\/a> in <a href=\"\/blog\/?p=1269\">the past<\/a>, and the same modus operandi, with a fresh profile:<\/p>\n<table class=\"table\">\n<tr>\n<th><\/th>\n<th>3.6.14pre<\/th>\n<th>4.0b8<\/th>\n<th>Difference<\/th>\n<\/tr>\n<tr>\n<th>x86<\/th>\n<td>2,933.46 \u00c2\u00b1 0.72%<\/td>\n<td>3,228.76 \u00c2\u00b1 0.57%<\/td>\n<td>295.30 (+10.06%)<\/td>\n<\/tr>\n<tr>\n<th>x86-64<\/th>\n<td>3,150.5 \u00c2\u00b1 0.59%<\/td>\n<td>3,382.0 \u00c2\u00b1 0.51%<\/td>\n<td>231.5 (+7.34%)<\/td>\n<\/tr>\n<\/table>\n<p>So, 4.0b8 ends up being slightly slower than the latest 3.6 on startup with a fresh profile. Now that <a href=\"\/blog\/?p=1177#packing-relocations\">relocation packing<\/a> <a href=\"http:\/\/hg.mozilla.org\/mozilla-central\/pushloghtml?changeset=9a6de1e28d4b\">landed<\/a>, we should be closer to 3.6, but still slightly slower.<\/p>\n<p>On the other hand, 4.0 has seen two main changes directly impacting on startup time:<\/p>\n<ul>\n<li>omni.jar: most chrome, preferences, javascript modules, and components are now all packed in a single file in the Firefox directory.<\/li>\n<li>packed extensions: most extensions are not unpacked anymore in the profile directory,<\/li>\n<\/ul>\n<p>Let's thus see how each of these is making a difference, starting with omni.jar:<\/p>\n<table class=\"table\">\n<tr>\n<th><\/th>\n<th>4.0b8 without omni.jar<\/th>\n<th>4.0b8<\/th>\n<th>Difference<\/th>\n<\/tr>\n<tr>\n<th>x86<\/th>\n<td>3,420.4 \u00c2\u00b1 0.92%<\/td>\n<td>3,228.76 \u00c2\u00b1 0.57%<\/td>\n<td>191.64 (-5.60%)<\/td>\n<\/tr>\n<tr>\n<th>x86-64<\/th>\n<td>3,554.22 \u00c2\u00b1 0.82%<\/td>\n<td>3,382.0 \u00c2\u00b1 0.51%<\/td>\n<td>172.22 (-4.85%)<\/td>\n<\/tr>\n<\/table>\n<p>As can be seen here, packing most files in the Firefox directory did bring roughly a 5% speedup on cold startup, which helped keeping 4.0b8 somehow close to 3.6 in startup time on fresh profiles.<\/p>\n<table class=\"table\">\n<tr>\n<th>3.6.14pre with extensions<\/th>\n<th>4.0b8 with extensions<\/th>\n<th>Difference<\/th>\n<\/tr>\n<tr>\n<td>4,457.18 \u00c2\u00b1 1.79%<\/td>\n<td>4,235.14 \u00c2\u00b1 0.60%<\/td>\n<td>222.04 (-4.98%)<\/td>\n<\/tr>\n<\/table>\n<p>Taking six of the most popular extensions that work in both 3.6 and 4.0, we can see the positive effect of keeping extensions packed, especially considering a fresh profile is slower with 4.0. It has to be noted, though, that one of these extensions enforced being unpacked (which is still a possibility for extensions requiring it), so the 4.0 profile had effectively five packed extensions and another unpacked one.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>During the past weeks, I&#8217;ve been posting a lot of data about what various changes can bring in terms of startup time improvement. It is now time to look back on how thing have changed between 3.6 and the upcoming 4.0. With the same setup I&#8217;ve been using in the past, and the same modus [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[23],"class_list":["post-1633","post","type-post","status-publish","format-standard","hentry","category-planet-mozilla","tag-en"],"_links":{"self":[{"href":"https:\/\/glandium.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1633","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/glandium.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/glandium.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/glandium.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/glandium.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1633"}],"version-history":[{"count":18,"href":"https:\/\/glandium.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1633\/revisions"}],"predecessor-version":[{"id":1664,"href":"https:\/\/glandium.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1633\/revisions\/1664"}],"wp:attachment":[{"href":"https:\/\/glandium.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1633"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/glandium.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1633"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/glandium.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}