Doloto on DevLabs

AJAX web applications bring a variety of rich user experiences to the web, but often those experiences require downloading a lot of code.  The result is applications that are frustratingly slow to load and taxing to web servers.

Today we are announcing the availability of Doloto on MSDN DevLabs Doloto is a tool that makes pages more responsive by decreasing the initial download size of complex AJAX web applications.

Doloto analyzes AJAX application workloads and automatically performs code splitting of existing large web applications. Doloto enables applications to initially transfer only the portion of client-side JavaScript code necessary for application initialization. The rest of the application’s code is replaced by short stubs; their actual function code is transferred lazily in the background or on-demand on first execution. Since code download is interleaved with application execution, users can start interacting with your web application much sooner without waiting to download code that implements features they’re not currently using.

How it Works

Doloto is a standalone client-side tool.  Its wizard guides you through the following three steps:


1.     Doloto profiles your application. Doloto performs profiling by running a local proxy on your machine that intercepts JavaScript files and instruments them to capture timestamps at runtime for every JavaScript function in a browser-independent manner.

2.     Profiling information is used to calculate code coverage and a clustering strategy. This determines which functions are stubbed out and which are not and groups functions into batches which are downloaded together, called clusters.

3.     Doloto rewrites JavaScript code.  It then saves it to disk so that you can upload it to the server. The entire process happens on your machine, without needing access to the server. This way, you can profile and optimize the JavaScript of a any third-party site without special access to their servers. When you are satisfied with Doloto’s results, you can deploy the rewritten files to the server.


Show Me Some Results!

In our experiments across a number of AJAX applications and network conditions, Doloto reduced the amount of initial downloaded JavaScript code by over 40%, resulting in startup often faster by 30-40%, depending on network conditions.  The chart below shows savings in the amount of downloaded JavaScript code across a range of popular web sites required for the initial application loading phase.


Doloto download savings 

Download and try Doloto today, and share your thoughts and experiences on the project’s forum.



Comments (20)

  1. Brooks Holland says:

    Just what I have been looking for!

  2. Squiggs says:

    This is a wonderful application.  Combined with the recent contribution to the Linux kernel, it seems like Microsoft may care about more than glitz after all . . .

  3. User says:

    They might want to put this much effort in optimizing their AJAX library that comes with .net – stop it polluting the global namespace so much would be a start

  4. Hi,

    Is it dependent upon ur browser in some way. Or it is browser independent. Does it support browsers other than internet explorer.

    By the way really nice product.

    Jay Shree Krishna…

  5. Ben Livshits says:

    Thanks for the kind comments. Doloto is completely browser-independent. You may use it with IE, Firefox, or any other browser that understands JavaScript. This is because we perform instrumentation through rewriting of the JavaScript code, not anything built into the browser.


  6. The most time on the most sites we download imagages. The code size is not too much.

  7. Gilberto says:

    Great idea, unfortunately it’s Microsoft proprietary code that runs only in a Microsoft environment.

  8. Tom says:

    @Gilberto: You are on a Microsoft blog. What are you looking for here? Support for Apple or Linux?

    Goods ideas here are for Microsoft eco-system.


  9. Steve Smith says:

    This looks pretty awesome!

    Does this profile code and optimize for browsers in general or specifically for IE?

  10. phuff says:

    Steve Smith- as Ben Livshits says above, Doloto is browser-independent.

    Polita Paulus

    Developer Division


  11. Thiago says:

    phuff, It may be browser-independent but to run the tool you still need a Microsoft environment with the .NET framework.

    That’s such a close-minded, proprietary-focused community…

  12. Gilberto says:

    @Tom you are right…sorry about that. My comment was supposed to be posted on Steve Souders’ blog (I’ll pay more attention next time 😉 )

  13. Ganesh says:

    Intresting. Trying it out now.

  14. Tom says:

    @Thiago: Again, what are you looking for in a .NET community blog?? Information here is for Microsoft technology and developers. Why is it close-minded? Just because you may program in Linux or Apple does not make you an open-minded person or a part of an open-minded community.

  15. _ivan says:

    Can Doloto optimize AjaxToolkit.dll or any other ASP.NET assemblies which generate JavaScript code, such as UpdatePanel?

    It doesn’t look like it, but may be I am missing something.

  16. Ben Livshits says:

    @_ivan: Yes, Doloto can be used to optimize the code produced by just about any toolkit or library. In fact, because the code coverage for libraries tends to be lower, Doloto is able to stub out more code than it would be for an app that does not depend on a library. Having said that, we do not provide any special integration with these libraries.

  17. beyonddoor says:

    The idea is very smart, it could help the AJAX programmer a lot.

  18. Doloto is maybe nice, but the performance of the tool itself is awful 🙁

    For one test run, it created a bunch of .doloto files, totaling more than 700 mb in size.

    Now i’m sitting here patiently about 15 minutes waiting for ‘step 3’, which presumably would be awfully long, because time spent updating the logfile textbox is O(n^2) for the number of log messages…

  19. Rajiv says:

    I would like to have comments from people out here about there experience with using Doloto and how much % performance enhancement have you seen after using this tool.

    I would be requiring this for speeding up my recenlty built ajax based web application.

    Looking for your comments

  20. LouisVuittonstory says:

    What are you looking for here? Support for Apple or Linux?  handbags for sale

Skip to main content