{"id":2278,"date":"2012-06-15T14:36:27","date_gmt":"2012-06-15T19:36:27","guid":{"rendered":"http:\/\/mikeconley.ca\/blog\/?p=2278"},"modified":"2023-12-20T16:25:13","modified_gmt":"2023-12-20T21:25:13","slug":"gecko-profiler-now-works-in-thunderbird-daily","status":"publish","type":"post","link":"https:\/\/mikeconley.ca\/blog\/2012\/06\/15\/gecko-profiler-now-works-in-thunderbird-daily\/","title":{"rendered":"Gecko Profiler now works in Thunderbird Daily"},"content":{"rendered":"<p>One of the first steps to making software snappier is knowing where the bottlenecks are. For Thunderbird, finding those bottlenecks has been hard &#8211; we haven&#8217;t had any tools to make drilling down to the slow bits easy.<\/p>\n<p>Until now.<\/p>\n<p>The platform folks have developed <a href=\"https:\/\/developer.mozilla.org\/en\/Performance\/Profiling_with_the_Built-in_Profiler\">a really awesome profiler tool<\/a>, and it&#8217;s been working really nicely in Firefox for some time now.<\/p>\n<p>This past week, I spent a few hours making it work in Thunderbird.<\/p>\n<p><a href=\"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/thunderbird\/nightly\/latest-comm-central\/\">If you&#8217;ve got a recent Daily of Thunderbird around<\/a>, you can try it out right now.<\/p>\n<h3>How to bask in the glory of this awesome tool<\/h3>\n<p><a href=\"http:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2012\/06\/Screen-Shot-2012-06-13-at-4.26.14-PM.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2279\" data-permalink=\"https:\/\/mikeconley.ca\/blog\/2012\/06\/15\/gecko-profiler-now-works-in-thunderbird-daily\/screen-shot-2012-06-13-at-4-26-14-pm\/\" data-orig-file=\"https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2012\/06\/Screen-Shot-2012-06-13-at-4.26.14-PM.png\" data-orig-size=\"1557,549\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Holy smokes!\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2012\/06\/Screen-Shot-2012-06-13-at-4.26.14-PM-300x105.png\" data-large-file=\"https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2012\/06\/Screen-Shot-2012-06-13-at-4.26.14-PM-1024x361.png\" class=\"alignnone size-large wp-image-2279\" title=\"Holy smokes!\" src=\"http:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2012\/06\/Screen-Shot-2012-06-13-at-4.26.14-PM-1024x361.png\" alt=\"\" width=\"1024\" height=\"361\" srcset=\"https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2012\/06\/Screen-Shot-2012-06-13-at-4.26.14-PM-1024x361.png 1024w, https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2012\/06\/Screen-Shot-2012-06-13-at-4.26.14-PM-300x105.png 300w, https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2012\/06\/Screen-Shot-2012-06-13-at-4.26.14-PM.png 1557w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<ol>\n<li>Make sure your Daily is recent. Anything built from today onwards should work.<\/li>\n<li><a href=\"https:\/\/github.com\/bgirard\/Gecko-Profiler-Addon\/raw\/master\/geckoprofiler.xpi\">Install this add-on. It&#8217;s restartless!<\/a><\/li>\n<li>Check out your status bar. There should be two little panels there &#8211; &#8220;Disabled&#8221;, and &#8220;Dump Profile&#8221;<\/li>\n<li>Click on &#8220;Disabled&#8221; to switch the profiler into &#8220;Enabled&#8221; mode. Once you do that, it starts recording.<\/li>\n<li>Do some stuff, like check your mail&#8230;or do a search.<\/li>\n<li>Click on &#8220;Dump Profile&#8221;.<\/li>\n<li>A content tab will open that will show you profiling data gathered up to that point.<\/li>\n<li>Click on &#8220;Enabled&#8221; to disable the profiler &#8211; this will clear out the recording, to let you do a new one.<\/li>\n<\/ol>\n<p>The web app that lets you browse the profile data is pretty sophisticated &#8211; <a href=\"https:\/\/developer.mozilla.org\/en\/Performance\/Profiling_with_the_Built-in_Profiler\">you can read the skinny about it here.<\/a><\/p>\n<h3>Cooking with gas<\/h3>\n<p>On Windows or OSX, do an optimized, non-debug build of comm-central with the &#8211;enable-profiling flag set. Now you get <em>super <\/em>rich profiling data. Now you&#8217;re cookin&#8217; with gas.<\/p>\n<p>So hopefully this will be useful in making Thunderbird better, faster and stronger.<\/p>\n<p>Big thanks to Benoit Gerard for his help and guidance porting the add-on, and the platform team for creating such a badass tool.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the first steps to making software snappier is knowing where the bottlenecks are. For Thunderbird, finding those bottlenecks has been hard &#8211; we haven&#8217;t had any tools to make drilling down to the slow bits easy. Until now. The platform folks have developed a really awesome profiler tool, and it&#8217;s been working really [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[861,862],"tags":[125,1018,1021,35,1017,1016,1020,1019,867],"class_list":["post-2278","post","type-post","status-publish","format-standard","hentry","category-mozilla-2","category-thunderbird","tag-firefox","tag-gecko","tag-memory","tag-mozilla","tag-platform","tag-profiler","tag-snappy","tag-speed","tag-thunderbird-2"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/prmTy-AK","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/2278","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/comments?post=2278"}],"version-history":[{"count":3,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/2278\/revisions"}],"predecessor-version":[{"id":3104,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/2278\/revisions\/3104"}],"wp:attachment":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/media?parent=2278"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/categories?post=2278"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/tags?post=2278"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}