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

<channel>
	<title>Benoit Girard&#039;s Blog</title>
	<atom:link href="http://benoitgirard.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://benoitgirard.wordpress.com</link>
	<description>My Programming Experiences</description>
	<lastBuildDate>Tue, 21 May 2013 22:11:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='benoitgirard.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Benoit Girard&#039;s Blog</title>
		<link>http://benoitgirard.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://benoitgirard.wordpress.com/osd.xml" title="Benoit Girard&#039;s Blog" />
	<atom:link rel='hub' href='http://benoitgirard.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Profiler @ Snappy Work Week</title>
		<link>http://benoitgirard.wordpress.com/2013/03/25/profiler-snappy-work-week/</link>
		<comments>http://benoitgirard.wordpress.com/2013/03/25/profiler-snappy-work-week/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 14:54:05 +0000</pubDate>
		<dc:creator>benoitgirard</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://benoitgirard.wordpress.com/?p=469</guid>
		<description><![CDATA[Last week I attended the snappy work week with goal of syncing up with Julian Seward and Mike Hommey regarding the new Breakpad unwinding feature, planning and prioritizing new feature work. I also got lots of valuable feedback. Here&#8217;s what you need to know if you&#8217;re a frequent user of the Gecko Profiler. Breakpad Unwinding [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=469&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Last week I attended the snappy work week with goal of syncing up with <a href="http://blog.mozilla.org/jseward/">Julian Seward</a> and <a href="http://glandium.org/blog/">Mike Hommey</a> regarding the new Breakpad unwinding feature, planning and prioritizing new feature work. I also got lots of valuable feedback. Here&#8217;s what you need to know if you&#8217;re a frequent user of the Gecko Profiler.</p>
<h2>Breakpad Unwinding (Mobile)</h2>
<p>For the last few months Julian has been spearheading integrating the breakpad unwinding feature to the Gecko Profiler. This turned out to be a very complicated task because we&#8217;re trying to use Breakpad for something it wasn&#8217;t meant to do. This work is now landed but it only works in a very specific build configuration (unwind tables, unpacking the libraries, no elfhack). We are currently working on addressing these problems to make it work in the default Nightly configuration.</p>
<p>Our current target is to use Breakpad unwinding in the Linux May 1st nightly. A week later have the Fennec nightly support breakpad unwinding. I&#8217;m hoping afterwards to support Breakpad unwinding on B2G central (not b2g18) but I expect this may be difficult on a memory constraint phone so I currently have no estimate for this at this time.</p>
<p>If you looked at the code for the profiler you may notice TableTicker1+TableTicker2. During the work week we refactored the code significantly to address this code duplication while resolving inconsistencies between the frame-pointer unwinder and the Breakpad unwinder.</p>
<h2>Multi-Thread/Multi-Process Support</h2>
<p>The profiler will soon support showing samples and timelines for multiple threads. This is already somewhat supported on B2G if you use a script written by Vlad. This will become easier as we begin to add multi-thread support to all the platform backends (already in progress for Mac and Linux) thanks to the help of James Willcox. This ties in heavily with the next two section (IPDL/Plugins).</p>
<h2>Plugin Support</h2>
<p>Plugin issues have long been identified as the single biggest contributor to responsiveness issues by <a href="http://blog.mozilla.org/vdjeric/">Vladan</a>&#8216;s Chrome Hang work. This was the topic of the break out discussion headed by <a href="http://benjamin.smedbergs.us/blog/">Benjamin Smedberg</a>. We discussed a plan of attack by adding profiling to the plugin process which should land this week but require a manual step. This feature will let us know what&#8217;s going on in the plugin process when the browser&#8217; main thread is waiting for an IPC response (and vice versa). It will improve as we add profiling support for profiling IPDL messages.</p>
<div id="attachment_482" class="wp-caption aligncenter" style="width: 510px"><a href="http://benoitgirard.files.wordpress.com/2013/03/screen-shot-2013-03-25-at-10-50-43-am.png"><img class="size-full wp-image-482" alt="Flash Profiling" src="http://benoitgirard.files.wordpress.com/2013/03/screen-shot-2013-03-25-at-10-50-43-am.png?w=500&#038;h=345" width="500" height="345" /></a><p class="wp-caption-text">Flash initializing audio on plugin-container startup.</p></div>
<h2>IPDL Message Support</h2>
<p>During the week we decided to add profiler labels to each IPDL call automatically. That will help where the unwinder isn&#8217;t supported but doesn&#8217;t give us the data we need. In particular we&#8217;re looking to get better data about how IPDL messages are queued, how long they take to get dequeued and to processed. Combined with the Plugin support this should help us diagnose complex issues with our plugin-container or get better data on how particular plugins are hurting the responsiveness of the browser. Georg Fritzsche has an excellent plan in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=853864">bug 853864</a> on how to implement this.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benoitgirard.wordpress.com/469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benoitgirard.wordpress.com/469/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=469&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benoitgirard.wordpress.com/2013/03/25/profiler-snappy-work-week/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cf6d75008f1496f1b510e8dc02b1f1a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benoitgirard</media:title>
		</media:content>

		<media:content url="http://benoitgirard.files.wordpress.com/2013/03/screen-shot-2013-03-25-at-10-50-43-am.png" medium="image">
			<media:title type="html">Flash Profiling</media:title>
		</media:content>
	</item>
		<item>
		<title>Shutdown Reporter Results</title>
		<link>http://benoitgirard.wordpress.com/2013/03/12/shutdown-report-results/</link>
		<comments>http://benoitgirard.wordpress.com/2013/03/12/shutdown-report-results/#comments</comments>
		<pubDate>Tue, 12 Mar 2013 03:59:40 +0000</pubDate>
		<dc:creator>benoitgirard</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://benoitgirard.wordpress.com/?p=455</guid>
		<description><![CDATA[In a previous blog post I asked for volunteers to send in their shutdown profiles automatically. I&#8217;ve received hundreds of slow shutdown profiles, 30 profiles of which are over 10 seconds and one as high as 80 seconds! These profiles show us where Firefox is spending its time when closing down to the millisecond. Before [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=455&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>In a previous blog post <a href="https://benoitgirard.wordpress.com/2013/01/18/is-your-shutdown-slow-turn-on-the-performance-reporter/">I asked for volunteers</a> to send in their shutdown profiles automatically. I&#8217;ve received hundreds of slow shutdown profiles, 30 profiles of which are over 10 seconds and one as high as 80 seconds! These profiles show us where Firefox is spending its time when closing down to the millisecond.</p>
<p>Before I started this experiment I asked around for what people thought was the cause of the slow shutdowns. The overwhelming response I got was that it was Garbage Collection and Cycle Collection. While those operations do make the shutdowns slower, they were rarely responsible for those 10 to 80 seconds shutdown times.</p>
<p>Here&#8217;s some interesting issues we found:</p>
<ul>
<li>A few start-up optimizations moved operations off the startup path and into timers that would <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=816656">update the startup cache</a>, or <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=833087">load fonts</a>. These timers were never canceled when shutting down so they would lead to things such as font loading while shutting down. Since you have to open &amp; close the browser within a minute to see these issues they are not critical for our users but these are certainly bugs we are cleaning up. Keep in mind if you are running timers you should stop them on shutdown before they fire if they are no longer useful.</li>
<li>On a related note we have timers going off during the shutdown. Particularly <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=822849">GC and CC timers</a>. There is no guarantee that the shutdown will take long enough for these timers to run. If these are useless then we will waste time but if they are important they may not run.</li>
<li>Stopping plug-ins can take up to a second. I do not capture what is happening in the plug-in process so I can&#8217;t tell if it&#8217;s our container or the plug-in.</li>
<li>Releasing <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=819489">style sheets on shutdown</a> will sometimes total over 1 second of execution on slow shutdown.</li>
<li>Time spent in sqlite3close in some profiles is as high as 10 seconds.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=824433">Bookmark backups</a> are hurting us.</li>
</ul>
<div id="attachment_461" class="wp-caption aligncenter" style="width: 510px"><a href="http://benoitgirard.files.wordpress.com/2013/03/9h.png"><img class="size-full wp-image-461" alt="Shutdown metrics" src="http://benoitgirard.files.wordpress.com/2013/03/9h.png?w=500&#038;h=326" width="500" height="326" /></a><p class="wp-caption-text">Shutdown metrics</p></div>
<p>A big thumbs up to people who are submitting shutdown profiles. The data we are collecting is very valuable in helping us understand how Firefox behaves outside the labs.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benoitgirard.wordpress.com/455/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benoitgirard.wordpress.com/455/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=455&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benoitgirard.wordpress.com/2013/03/12/shutdown-report-results/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cf6d75008f1496f1b510e8dc02b1f1a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benoitgirard</media:title>
		</media:content>

		<media:content url="http://benoitgirard.files.wordpress.com/2013/03/9h.png" medium="image">
			<media:title type="html">Shutdown metrics</media:title>
		</media:content>
	</item>
		<item>
		<title>GTest Has Landed. Start Writing Your Unit Tests.</title>
		<link>http://benoitgirard.wordpress.com/2013/02/25/gtest-has-landed-start-writing-your-unit-tests/</link>
		<comments>http://benoitgirard.wordpress.com/2013/02/25/gtest-has-landed-start-writing-your-unit-tests/#comments</comments>
		<pubDate>Mon, 25 Feb 2013 15:45:06 +0000</pubDate>
		<dc:creator>benoitgirard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://benoitgirard.wordpress.com/?p=448</guid>
		<description><![CDATA[This weekend GTest landed in the mozilla-central tree. See Bug 767231 for the changes and follow up bugs. We have some follow-up changes coming such as adding a mach target, replacing &#8211;enable-gtest by &#8211;enable-tests and adding gtests to tinderbox. Everything is now ready for developers to start adding their own unit tests to libxul. All [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=448&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This weekend GTest landed in the mozilla-central tree. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=767231">Bug 767231</a> for the changes and follow up bugs. We have some follow-up changes coming such as adding a mach target, replacing &#8211;enable-gtest by &#8211;enable-tests and adding gtests to tinderbox. <strong>Everything is now ready for developers to start adding their own unit tests to libxul</strong>.</p>
<p>All the unit tests will be linked within libxul. This means that you don&#8217;t have to export any symbols you intend on testing. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=767231">Bug 767231</a> for the pros and cons of this solution. The summary is that unit tests will run against a different libxul library (libxul+unittest) than the one we will ship (libxul only) at the benefit of having access to all the symbols. Unit tests will not be shipped in a normal release build.</p>
<p>To run GTest build with &#8216;&#8211;enable-gtest&#8217; and simply add the -unittest option when running firefox. To add an unit test create a test .cpp file, declare it to the makefile &#8216;GTEST_CPPSRCS = TestFoo.cpp&#8217; and you&#8217;re done.</p>
<p>For more details see the up-to-date documentation: <a href="https://developer.mozilla.org/en-US/docs/GTest" rel="nofollow">https://developer.mozilla.org/en-US/docs/GTest</a></p>
<p><a href="http://benoitgirard.files.wordpress.com/2013/02/8y.png"><img class="aligncenter size-full wp-image-452" alt="8y" src="http://benoitgirard.files.wordpress.com/2013/02/8y.png?w=500&#038;h=288" width="500" height="288" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benoitgirard.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benoitgirard.wordpress.com/448/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=448&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benoitgirard.wordpress.com/2013/02/25/gtest-has-landed-start-writing-your-unit-tests/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cf6d75008f1496f1b510e8dc02b1f1a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benoitgirard</media:title>
		</media:content>

		<media:content url="http://benoitgirard.files.wordpress.com/2013/02/8y.png" medium="image">
			<media:title type="html">8y</media:title>
		</media:content>
	</item>
		<item>
		<title>Is Your Shutdown Slow? Turn On The Performance Reporter!</title>
		<link>http://benoitgirard.wordpress.com/2013/01/18/is-your-shutdown-slow-turn-on-the-performance-reporter/</link>
		<comments>http://benoitgirard.wordpress.com/2013/01/18/is-your-shutdown-slow-turn-on-the-performance-reporter/#comments</comments>
		<pubDate>Fri, 18 Jan 2013 22:37:45 +0000</pubDate>
		<dc:creator>benoitgirard</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://benoitgirard.wordpress.com/?p=434</guid>
		<description><![CDATA[Does your Firefox take a long time to shutdown? Do you get &#8220;Firefox is already running&#8221; messages when restarting? Well the Firefox Performance team would like to fix that, so please keep reading! The Gecko Profiler extension now has a new feature called the (Automatic) &#8216;Performance Reporter&#8217;. If you opt into this feature, the profiler [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=434&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Does your Firefox take a long time to shutdown? Do you get &#8220;Firefox is already running&#8221; messages when restarting? Well the Firefox Performance team would like to fix that, so please keep reading!</p>
<p>The <a href="https://developer.mozilla.org/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler">Gecko Profiler extension</a> now has a new feature called the (Automatic) &#8216;Performance Reporter&#8217;. If you opt into this feature, the profiler will watch your browser for any performance hiccups and will automatically send a detailed bug report for the Performance team to fix! Currently, this Performance Reporter feature monitors only your browser&#8217;s shutdown behavior and only sends us a report if shutdown takes longer then 1.5 seconds, but we would like to extend it to cover all aspects of Firefox performance. The reporter works in the background and does not interfere with your use of the browser.</p>
<p>The performance reports contain the <strong><span style="color:#ff0000;">URLs of the tabs you have open</span></strong> and are uploaded publicly for processing, so if you are not comfortable with communicating this information, do not enable this feature &#8212; we understand! We have taken precautions to never record anything coming from a private browsing window. Also, please note that the Performance Reporter is not related to Firefox&#8217;s Telemetry or Health Report features which never send any sensitive information such as URLs. The Performance Reporter is different &#8212; it collects very rich data so we can get a complete picture of any performance problem.</p>
<p>How do you turn this on? Make sure you&#8217;re running the <a href="https://github.com/bgirard/Gecko-Profiler-Addon/blob/master/geckoprofiler.xpi">latest version of the Gecko Profiler</a> which should read as v1.11.17 or later. If I have not scared you away great, turning on the Performance Reporter is as simple as flipping &#8216;profiler.performanceReporter&#8217; in about:config.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benoitgirard.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benoitgirard.wordpress.com/434/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=434&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benoitgirard.wordpress.com/2013/01/18/is-your-shutdown-slow-turn-on-the-performance-reporter/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cf6d75008f1496f1b510e8dc02b1f1a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benoitgirard</media:title>
		</media:content>
	</item>
		<item>
		<title>Analyzing page load performance frame-by-frame</title>
		<link>http://benoitgirard.wordpress.com/2013/01/11/analyzing-page-load-performance-frame-by-frame/</link>
		<comments>http://benoitgirard.wordpress.com/2013/01/11/analyzing-page-load-performance-frame-by-frame/#comments</comments>
		<pubDate>Fri, 11 Jan 2013 16:53:46 +0000</pubDate>
		<dc:creator>benoitgirard</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://benoitgirard.wordpress.com/?p=429</guid>
		<description><![CDATA[We&#8217;ve previously added video profiles in mobile and run them daily with eideticker. Here&#8217;s a proof a concept for doing the same thing for tracking page load on desktop. This works by tagging frames and CPU samples with a frame number. During the analysis we use this information to correlate the video stream with the [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=429&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>We&#8217;ve previously added video profiles in mobile and run them <a href="http://benoitgirard.wordpress.com/2012/09/21/video-synced-profiling/">daily with eideticker</a>. Here&#8217;s a proof a concept for doing the same thing for tracking page load on desktop.</p>
<p>This works by tagging frames and CPU samples with a frame number. During the analysis we use this information to correlate the video stream with the CPU samples. This lets us take something like a page load, slow it down and watch what we&#8217;re executing at each frame.</p>
<p>Take a look at <a href="http://people.mozilla.com/~bgirard/cleopatra/#report=f1a95615cb4ea51b49daf7416753888193e03786&amp;videoCapture=http://people.mozilla.com/~bgirard/output.webm">this profile</a> and follow along. I&#8217;ll only describe 4 interesting frames but feel free to look at the rest. When seeking with the video the corresponding region will be highlighted in the profile timeline. You can then click on samples in that timeline and they will be selected and appear as green:</p>
<ul>
<li>Seek to 4 seconds where the page is requested. This will continue to 5.5 seconds. During this we see a little network activity and a bit of work compositing to update the throbber. This is no surprise since my WiFi signal was poor.</li>
<li>Seek to 5.5 seconds where the page starts to appear on screen. Lets look closer at the first frame in order.
<ol>
<li>20 ms compiling JS</li>
<li>8 ms executing the JS from the page</li>
<li>5 ms is spent in Adblock</li>
<li>11 ms processing styles</li>
<li>37 ms reflowing the page, 16 ms of which is doing main thread IO loading fonts when calling &#8216;CGFontCreateWithFontName&#8217;.</li>
<li>Negligible time building the display list (profiler sampling rate too high)</li>
<li>19 ms drawing and compositing</li>
</ol>
</li>
<li>Seek to 5.9 seconds where we are waiting on the plugin to load. The plugin takes 200ms to load. This means we miss several frames.</li>
<li>Seek to about 7.3 seconds. During this frame the plugin stream is created. This adds another 100 ms delay.</li>
</ul>
<div id="attachment_430" class="wp-caption aligncenter" style="width: 510px"><a href="http://benoitgirard.files.wordpress.com/2013/01/8f.png"><img class="size-full wp-image-430" alt="Video Profile of Page Load" src="http://benoitgirard.files.wordpress.com/2013/01/8f.png?w=500&#038;h=347" width="500" height="347" /></a><p class="wp-caption-text">Video Profile of Page Load</p></div>
<p>My goal is to start making video capture features into the profiler add-on to make these profiles easier to capture.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benoitgirard.wordpress.com/429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benoitgirard.wordpress.com/429/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=429&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benoitgirard.wordpress.com/2013/01/11/analyzing-page-load-performance-frame-by-frame/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://people.mozilla.com/~bgirard/output.webm" length="1033798" type="video/webm" />
<enclosure url="http://people.mozilla.com/~bgirard/output.webm" length="1033798" type="video/webm" />
<enclosure url="http://people.mozilla.com/~bgirard/output.webm" length="1033798" type="video/webm" />
<enclosure url="http://people.mozilla.com/~bgirard/output.webm" length="1033798" type="video/webm" />
<enclosure url="http://people.mozilla.com/~bgirard/output.webm" length="1033798" type="video/webm" />
<enclosure url="http://people.mozilla.com/~bgirard/output.webm" length="1033798" type="video/webm" />
<enclosure url="http://people.mozilla.com/~bgirard/output.webm" length="1033798" type="video/webm" />
	
		<media:content url="http://0.gravatar.com/avatar/cf6d75008f1496f1b510e8dc02b1f1a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benoitgirard</media:title>
		</media:content>

		<media:content url="http://benoitgirard.files.wordpress.com/2013/01/8f.png" medium="image">
			<media:title type="html">Video Profile of Page Load</media:title>
		</media:content>
	</item>
		<item>
		<title>WebGL Project: Galaxy Map</title>
		<link>http://benoitgirard.wordpress.com/2013/01/05/webgl-project-galaxy-map/</link>
		<comments>http://benoitgirard.wordpress.com/2013/01/05/webgl-project-galaxy-map/#comments</comments>
		<pubDate>Sat, 05 Jan 2013 09:49:14 +0000</pubDate>
		<dc:creator>benoitgirard</dc:creator>
				<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://benoitgirard.wordpress.com/?p=417</guid>
		<description><![CDATA[I made my first small WebGL app that fetches a star catalog and displays stars within 25 parsec (80 lightyear) using WebGL+Three.JS. I also created a second view that will only show named star and will try to fetch their Wikipedia page on mouse over. I didn&#8217;t trim the catalog so be prepared to wait [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=417&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I made my first small WebGL app that fetches a <a href="http://www.astronexus.com/node/34">star catalog</a> and displays stars within 25 parsec (80 lightyear) using WebGL+<a href="https://github.com/mrdoob/three.js/">Three.JS</a>. I also created a second view that will only show named star and will try to fetch their Wikipedia page on mouse over.<del> I didn&#8217;t trim the catalog so be prepared to wait for 8mb of text to load <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </del>.</p>
<p>Try it out:</p>
<div id="attachment_420" class="wp-caption aligncenter" style="width: 510px"><a href="http://people.mozilla.com/~bgirard/galaxymapgl"><img class="size-full wp-image-420  " alt="View 1: Stars within 80 light years" src="http://benoitgirard.files.wordpress.com/2013/01/88.png?w=500&#038;h=322" width="500" height="322" /></a><p class="wp-caption-text">View 1: Stars within 80 light years</p></div>
<div id="attachment_419" class="wp-caption aligncenter" style="width: 510px"><a href="http://people.mozilla.com/~bgirard/galaxymapgl/?named"><img class="size-full wp-image-419 " title="View 2: Named stars only" alt="View 2: Named stars only" src="http://benoitgirard.files.wordpress.com/2013/01/871.png?w=500&#038;h=325" width="500" height="325" /></a><p class="wp-caption-text">View 2: Named stars only</p></div>
<p style="text-align:left;">This demo is missing a lot of optimization so it shouldn&#8217;t be used for benchmarking. <del>I also unfortunately didn&#8217;t get around to calculating and displaying the relative size of each star</del>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benoitgirard.wordpress.com/417/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benoitgirard.wordpress.com/417/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=417&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benoitgirard.wordpress.com/2013/01/05/webgl-project-galaxy-map/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cf6d75008f1496f1b510e8dc02b1f1a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benoitgirard</media:title>
		</media:content>

		<media:content url="http://benoitgirard.files.wordpress.com/2013/01/88.png" medium="image">
			<media:title type="html">View 1: Stars within 80 light years</media:title>
		</media:content>

		<media:content url="http://benoitgirard.files.wordpress.com/2013/01/871.png" medium="image">
			<media:title type="html">View 2: Named stars only</media:title>
		</media:content>
	</item>
		<item>
		<title>TryChooser now helps you get results faster</title>
		<link>http://benoitgirard.wordpress.com/2013/01/02/trychooser-now-helps-you-get-results-faster/</link>
		<comments>http://benoitgirard.wordpress.com/2013/01/02/trychooser-now-helps-you-get-results-faster/#comments</comments>
		<pubDate>Wed, 02 Jan 2013 17:53:00 +0000</pubDate>
		<dc:creator>benoitgirard</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://benoitgirard.wordpress.com/?p=407</guid>
		<description><![CDATA[I posted a change to TryChooser that will fetch the build queue and display it when selecting tests. Do your part by avoiding platforms with large queues if possible to get your results faster and help reduce contention.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=407&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I posted a change to <a href="http://trychooser.pub.build.mozilla.org/">TryChooser</a> that will fetch the build queue and display it when selecting tests. Do your part by avoiding platforms with large queues if possible to get your results faster and help reduce contention.</p>
<div id="attachment_408" class="wp-caption aligncenter" style="width: 470px"><a href="http://benoitgirard.wordpress.com/2013/01/02/trychooser-now-helps-you-get-results-faster/attachment/84/" rel="attachment wp-att-408"><img class="size-full wp-image-408 " title="TryChooser Load" alt="TryChooser Load" src="http://benoitgirard.files.wordpress.com/2013/01/84.png?w=500"   /></a><p class="wp-caption-text">TryChooser Load: Avoid platforms with high numbers.</p></div>
<p style="text-align:center;">
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benoitgirard.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benoitgirard.wordpress.com/407/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=407&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benoitgirard.wordpress.com/2013/01/02/trychooser-now-helps-you-get-results-faster/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cf6d75008f1496f1b510e8dc02b1f1a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benoitgirard</media:title>
		</media:content>

		<media:content url="http://benoitgirard.files.wordpress.com/2013/01/84.png" medium="image">
			<media:title type="html">TryChooser Load</media:title>
		</media:content>
	</item>
		<item>
		<title>Analyzing Shutdown Performance</title>
		<link>http://benoitgirard.wordpress.com/2012/12/05/analyzing-shutdown-performance/</link>
		<comments>http://benoitgirard.wordpress.com/2012/12/05/analyzing-shutdown-performance/#comments</comments>
		<pubDate>Wed, 05 Dec 2012 00:49:18 +0000</pubDate>
		<dc:creator>benoitgirard</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://benoitgirard.wordpress.com/?p=396</guid>
		<description><![CDATA[With the landing of bug 799640, the profiler add-on can now profile shutdown. I&#8217;ve created a dashboard that summarizes data from 10 of my shutdown profiles. Take a look at the dashboard here. You will find the shutdown profiles in the second section half way down the page. You&#8217;ll see 10 profiles under total or [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=396&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>With the landing of <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=799640">bug 799640</a>, the profiler add-on can now profile shutdown. I&#8217;ve created a dashboard that summarizes data from 10 of my shutdown profiles. Take a look at the <a href="http://people.mozilla.com/~bgirard/startup_report/report.html">dashboard here</a>. You will find the shutdown profiles in the second section half way down the page. You&#8217;ll see 10 profiles under total or per function, clicking on any of them will open them in the preview and will filter by the function. Shutdown is at the end of the profile so I recommend focusing from the first pink shutdown marker and onward. You&#8217;ll see the following shutdown markers:</p>
<ul>
<li>Shutdown start: A shutdown has been requested.</li>
<li>Shutdown early: Where we hope to call exit(0) eventually. Nearly everything after will not run with a few exceptions that will be moved before this point.</li>
<li>Shutdown xpcom: Where we hope to call exit(0) soon.</li>
</ul>
<p>What are we doing during shutdown? Here&#8217;s some trivia about my shutdowns:</p>
<ul>
<li>Takes from 1,000ms to 2,700ms making shutdown highly variable. As expected runs with higher uptime had slower shutdowns.</li>
<li>Most of the shutdown time is spent doing GC/CC. This is because we persist data on destructors forcing us to clean up. This is getting fixed by exit(0) in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=662444">bug 662444</a>.</li>
<li>Placing exit(0) at &#8216;Shutdown early&#8217; would save between 1/3 to 2/3 of the shutdown time depending on the instance.</li>
<li>Our shutdown is blocked by plugins because they may also need to persist data. Sadly this has to happen synchronously on the main thread and takes a consistent 90ms for me. We&#8217;re discussing options in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=818265">bug 818265</a>.</li>
<li>Pages such as gmail.com block shutdown by running scripts on &#8216;page hide&#8217; which is called on shutdown. This is unbounded but in my case was about 100ms.</li>
<li>Startup and shutdown performance bugs are being tracked in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=810156">bug 810156.</a></li>
<li>Shutting down with less the 10 seconds of uptime will cause the startup cache to be saved on shutdown <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=816656">bug 816656</a>.</li>
</ul>
<p>After I&#8217;ve had time to study this data more I&#8217;m hoping gather performance data on other people&#8217;s profile to give a better sample of shutdown times since my Firefox profile is simple and I don&#8217;t stockpile 100s of tabs in my session like most do.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benoitgirard.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benoitgirard.wordpress.com/396/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=396&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benoitgirard.wordpress.com/2012/12/05/analyzing-shutdown-performance/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cf6d75008f1496f1b510e8dc02b1f1a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benoitgirard</media:title>
		</media:content>
	</item>
		<item>
		<title>Quick bugzilla queries</title>
		<link>http://benoitgirard.wordpress.com/2012/11/22/quick-bugzilla-queries/</link>
		<comments>http://benoitgirard.wordpress.com/2012/11/22/quick-bugzilla-queries/#comments</comments>
		<pubDate>Thu, 22 Nov 2012 19:01:52 +0000</pubDate>
		<dc:creator>benoitgirard</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://benoitgirard.wordpress.com/?p=389</guid>
		<description><![CDATA[Here&#8217;s a tip to speed up entering a bugzilla search query. Set a &#8216;bug&#8217; keyword to bugzilla&#8217;s quicksearch field: Now you can perform bugzilla queries from your URL bar. Here are some examples: bug FIXED reporter:bgirard bug component:Graphics bug blocking-fennec:+ assigned:bgirard Here is a complete list of flags: https://bugzilla.mozilla.org/page.cgi?id=quicksearch.html#fields. Note that status: does not work [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=389&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a tip to speed up entering a bugzilla search query. Set a &#8216;bug&#8217; keyword to bugzilla&#8217;s quicksearch field: <a href="http://benoitgirard.files.wordpress.com/2012/11/7t.png"><img class="aligncenter size-full wp-image-390" title="7t" alt="" src="http://benoitgirard.files.wordpress.com/2012/11/7t.png?w=500&#038;h=214" height="214" width="500" /></a></p>
<p>Now you can perform bugzilla queries from your URL bar. Here are some examples:</p>
<p>bug FIXED reporter:bgirard<br />
bug component:Graphics<br />
bug blocking-fennec:+ assigned:bgirard</p>
<p>Here is a complete list of flags: <a href="https://bugzilla.mozilla.org/page.cgi?id=quicksearch.html#fields" rel="nofollow">https://bugzilla.mozilla.org/page.cgi?id=quicksearch.html#fields</a>. Note that status: does not work in 4.0 (The current BMO version), see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=662444">bug 662444</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benoitgirard.wordpress.com/389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benoitgirard.wordpress.com/389/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=389&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benoitgirard.wordpress.com/2012/11/22/quick-bugzilla-queries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cf6d75008f1496f1b510e8dc02b1f1a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benoitgirard</media:title>
		</media:content>

		<media:content url="http://benoitgirard.files.wordpress.com/2012/11/7t.png" medium="image">
			<media:title type="html">7t</media:title>
		</media:content>
	</item>
		<item>
		<title>Profiler: Charging expensive operations to cheap async causes</title>
		<link>http://benoitgirard.wordpress.com/2012/11/07/profiler-charging-expensive-operations-to-cheap-async-causes/</link>
		<comments>http://benoitgirard.wordpress.com/2012/11/07/profiler-charging-expensive-operations-to-cheap-async-causes/#comments</comments>
		<pubDate>Wed, 07 Nov 2012 20:54:01 +0000</pubDate>
		<dc:creator>benoitgirard</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Profiler]]></category>

		<guid isPermaLink="false">http://benoitgirard.wordpress.com/?p=385</guid>
		<description><![CDATA[We&#8217;ve been using the profiler to diagnose snappy problems for several months now with great success. The profiler can tell us which images are slow to decode, what scripts take longer then 15 ms to execute and what they&#8217;re doing. However the callstack doesn&#8217;t provide enough information to show what caused the execution. For example [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=385&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>We&#8217;ve been using the profiler to diagnose snappy problems for several months now with great success. The profiler can tell us which images are slow to decode, what scripts take longer then 15 ms to execute and what they&#8217;re doing. However the callstack doesn&#8217;t provide enough information to show what caused the execution. For example a small script snippet that changes the style causing cascading style changes that morphs the entire page. The script execution may takes less then 1 ms (i.e. likely not show up in a profile) and mark the styles as having changed. Then the next event recomputes the style causing the entire document to be repainted. The goal is to blame a quick running cause (a page change) to long running task (repainting).</p>
<p>Charging to the rescue! My goal is to be able to record a source for something like a page change and tag it/charge it to the work that is triggered. This is going to be a big project and I&#8217;m not ready to abandon my current tasks so I plan on working on a small piece every time I encounter the need for this. If you&#8217;re interested in helping out please let me know. Here are my current plan:</p>
<p>Part 1) Bug 809317: Adding infrastructure for printing the current location for debugging (Ready to land soon).</p>
<p>Part 2) Bug 777828: Allow unwinding results to be returned</p>
<p>Part 3) No bug: Support chaining unwinds as &#8217;causes&#8217;</p>
<p>Part 4) No bug: When sampling collect &#8217;causes&#8217; attributed to the current work.</p>
<p>Part 5) No bug: Display &#8217;causes&#8217; in the profiler UI</p>
<p>Part 6) No bug: Gather &#8217;causes&#8217; for expensive async operations.<br />
Note this is just a rough plan. I don&#8217;t know how well this will work out in practice.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benoitgirard.wordpress.com/385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benoitgirard.wordpress.com/385/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benoitgirard.wordpress.com&#038;blog=12112851&#038;post=385&#038;subd=benoitgirard&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benoitgirard.wordpress.com/2012/11/07/profiler-charging-expensive-operations-to-cheap-async-causes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cf6d75008f1496f1b510e8dc02b1f1a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benoitgirard</media:title>
		</media:content>
	</item>
	</channel>
</rss>
