{"id":170369,"date":"2009-11-25T16:54:03","date_gmt":"2009-11-25T16:54:03","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/project\/jsmeter-measuring-javascript-web-applications\/"},"modified":"2017-06-16T15:40:56","modified_gmt":"2017-06-16T22:40:56","slug":"jsmeter-measuring-javascript-web-applications","status":"publish","type":"msr-project","link":"https:\/\/www.microsoft.com\/en-us\/research\/project\/jsmeter-measuring-javascript-web-applications\/","title":{"rendered":"JSMeter: Measuring JavaScript Web Applications"},"content":{"rendered":"<p class=\"asset-content\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-215998 alignright\" src=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2009\/11\/JSMeter_logo_sm-245x300.jpg\" alt=\"JSMeter_logo_sm\" width=\"123\" height=\"150\" srcset=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2009\/11\/JSMeter_logo_sm-245x300.jpg 245w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2009\/11\/JSMeter_logo_sm.jpg 288w\" sizes=\"auto, (max-width: 123px) 100vw, 123px\" \/>The goal of JSMeter is to measure the runtime behavior of JavaScript programs. Our ultimate goal is to improve the quality of JavaScript engine implementations.<\/p>\n<div id=\"en-usprojectsjsmeterdefault\" class=\"page-content\">\n<h2 style=\"text-align: left;\" align=\"center\">Can you tell the JavaScript\u00a0benchmark from the Real Web App?\u00a0<b>\u00a0<\/b><\/h2>\n<table>\n<tbody>\n<tr>\n<td><span id=\"7c7a173d-ac58-49ce-b033-e0cce8209ee5\" class=\"ImageBlock fn\"><img decoding=\"async\" id=\"Image7c7a173d-ac58-49ce-b033-e0cce8209ee5\" src=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2016\/02\/jsmeter-splaylh.png\" alt=\"\" \/><span id=\"ImageCaption7c7a173d-ac58-49ce-b033-e0cce8209ee5\" class=\"ImageCaptionCoreCss ImageCaption\"><\/span><\/span><\/td>\n<td><span id=\"ab7249d3-5c21-4d1f-abcf-fd3ba7a9ed8f\" class=\"ImageBlock fn\"><img decoding=\"async\" id=\"Imageab7249d3-5c21-4d1f-abcf-fd3ba7a9ed8f\" src=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2016\/02\/jsmeter-facebooklh.png\" alt=\"\" \/><span id=\"ImageCaptionab7249d3-5c21-4d1f-abcf-fd3ba7a9ed8f\" class=\"ImageCaptionCoreCss ImageCaption\"><\/span><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Abstract<\/h2>\n<p>JavaScript is widely used in web-based applications and is increasing popular with developers. So-called \u201dbrowser wars\u201d in recent years have focused on JavaScript performance, specifically claiming comparative results based on benchmark suites such as SunSpider and V8. In this paper we evaluate the behavior of JavaScript web applications from commercial websites and compare this behavior with the benchmarks.<\/p>\n<p>We measure three specific areas of JavaScript runtime behavior: 1) functions and code; 2) heap-allocated objects and data; 3) events and handlers. We find that the benchmarks are not representative of many real websites and that conclusions reached from measuring the benchmarks may be misleading.<\/p>\n<p>Specific examples of such misleading conclusions include the following: that web applications have many loops, that non-string objects in web applications are extremely short-lived, and that web applications handle few events.<\/p>\n<p>We hope our results will convince the JavaScript community to develop and adopt benchmarks that are more representative of real web applications.<\/p>\n<\/div>\n<div id=\"en-usprojectsjsmeterdefault\" class=\"page-content\">\n<h3>Related Videos<\/h3>\n<ul>\n<li>&#8220;<a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" href=\"http:\/\/www.youtube.com\/watch?v=iHUGOUNT_zg\" target=\"_blank\">JSMeter: Characterizing Real-World Behavior of JavaScript Programs<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>&#8221;\u00a0a 40 minute overview of the project and our results presented at the <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" href=\"http:\/\/en.oreilly.com\/velocity2010\" target=\"_blank\">Velocity 2010 Web Performance and Operations Conference<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>.<\/li>\n<li>&#8220;<a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"http:\/\/channel9.msdn.com\/\/shows\/\/going+Deep\/\/e2E-Research-Perspectives-on-JavaScript-with-Erik-Meijer-Ben-Zorn-and-Ben-Livshits\/\">Project JSMeter: JavaScript Performance Analysis in the Real World<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>&#8221; &#8211; an MSDN Channel 9\u00a0interview with Erik Meier, Ben Livshits, and Ben Zorn.<\/li>\n<li>&#8220;<a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"http:\/\/channel9.msdn.com\/posts\/Charles\/IE-9-First-look-at-the-new-JS-Engine\/\">IE 9: First look at the new JS Engine<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>&#8221; &#8211; an MSDN Channel 9 interview with IE9 JavaScript engine team members John Montgomery, Steve Lucco and Shanku Niyogi.\u00a0 They discuss what is being done to speed up the JS engine, taking into account the needs of real-world web applications.<\/li>\n<\/ul>\n<h3>Other Media Coverage<\/h3>\n<ul>\n<li>&#8220;<a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" href=\"http:\/\/www.zdnet.com\/blog\/microsoft\/microsofts-jsmeter-a-new-way-to-analyze-and-affect-javascript-performance\/5697\" target=\"_blank\">Microsoft&#8217;s JSMeter: A new way to analyze and affect JavaScript performance<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>&#8221; by Mary Jo Foley, ZDNet All About Microsoft Blog, March 25, 2010.<\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>The goal of JSMeter is to measure the runtime behavior of JavaScript programs. Our ultimate goal is to improve the quality of JavaScript engine implementations. Can you tell the JavaScript\u00a0benchmark from the Real Web App?\u00a0\u00a0 Abstract JavaScript is widely used in web-based applications and is increasing popular with developers. So-called \u201dbrowser wars\u201d in recent years [&hellip;]<\/p>\n","protected":false},"featured_media":0,"template":"","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","footnotes":""},"research-area":[13560],"msr-locale":[268875],"msr-impact-theme":[],"msr-pillar":[],"class_list":["post-170369","msr-project","type-msr-project","status-publish","hentry","msr-research-area-programming-languages-software-engineering","msr-locale-en_us","msr-archive-status-active"],"msr_project_start":"2010-03-02","related-publications":[158596,158872],"related-downloads":[],"related-videos":[],"related-groups":[],"related-events":[],"related-opportunities":[],"related-posts":[],"related-articles":[],"tab-content":[],"slides":[],"related-researchers":[{"type":"user_nicename","value":"zorn","display_name":"Ben Zorn","author_link":"<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/people\/zorn\/\" aria-label=\"Visit the profile page for Ben Zorn\">Ben Zorn<\/a>","is_active":false,"user_id":35154,"last_first":"Zorn, Ben","people_section":0,"alias":"zorn"}],"msr_research_lab":[199565],"msr_impact_theme":[],"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/170369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/types\/msr-project"}],"version-history":[{"count":1,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/170369\/revisions"}],"predecessor-version":[{"id":236541,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/170369\/revisions\/236541"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media?parent=170369"}],"wp:term":[{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=170369"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=170369"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=170369"},{"taxonomy":"msr-pillar","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-pillar?post=170369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}