Monday, November 20th, 2006
Measuring the aggregate performance of Ajax applications
Ryan Breen spoke at The Ajax Experience on Ajax performance, and just released a preview of Actual Experience XF with Actual Experience Lite.
Instrumentation
To instrument a page for collection of metrics, you first include a small .js file in HEAD. Out of the box, the tag will track the
DOM Ready
andonload
times as well as additional metadata (browser type and version number, etc).The tag also provides 3 JavaScript functions — nameEvent, startInterval, and endInterval — which can be used to add timing instrumentation anywhere within your client side code. The first, nameEvent, defines a point-in-time event, while the latter two are used to measure a span of time. Here’s a simple use case:
var xhReq = createXMLHttpRequest(); xhReq.open("GET", "someGet.aspx?giveMe=stuff&iWant=stuff", true); xhReq.onreadystatechange = onSomeResponse; startInterval('some request'); xhReq.send(null); function onSomeResponse() { if (xhReq.readyState != 4) { return; } endInterval('some request'); var serverResponse = xhReq.responseXML; // do a bunch of stuff with the xml response nameEvent('finished response parsing'); }This example would create two events: an interval event called ’some request’ with a start time and a duration, and a point in time event called ‘finished response parsing’ with a start time and no duration. All start times are relative to the load of the aelite.js tag.
Example
Ryan instrumented W3C DOM vs. innerHTML table building and you can see the results.
The graphs are created with Dojo Chart, and Ryan even benchmarked that.





Leave a comment