Morning Coffee Notes

This morning I'm driving down to Google to have lunch with my buddy Joel Finkelstein. Joel's a massage therapist. He works at Google and him and his wife and their baby are moving to Santa Cruz in a week, which I'm really sad about. He does massage at Google and I'm going to meet him to grab some food. Afterwards I'm going to set up camp at Google and work for the rest of the day from there on HyperScope. Nothing like free food and free Wifi.

We're in the final stretches of the Engelbart project, so I've been working like mad. I actually worked like a dog in Paris, over the weekends, into the night, etc. and now I'm working more, so it's kind of intense. It's a lot of work, but an amazing project so I'm glad to put the time in.

Yesterday (Sunday) I found that our page load time of the HyperScope project was much too slow, so I did a lot of really intense profiling. Created a profiling infrastructure in the program, found the bottlenecks, and now I'm systematically eliminating the major bottlenecks.

The bottlenecks actually turned out to really be two major things. The first one is just the large number of files that we fetch on page load, such as Dojo's JavaScript infrastructure. This seems to be one of the biggest culprits for the performance of an Ajax application in general. I was surprised because I thought that having a large number of resources would only affect the first time you hit an application, but it turns out it also slows down every other time you access it, even after it's in your cache because the browser needs to ask the server if it's been modified. So, you get a bunch of 304 Not Modifieds, which creates high latency and prevents your application from starting up. So, my first big task has been merging most of our resources into one big file in order to reduce the number of files.

The other thing that's slow is the way that I take the results from our XSLT and show those in our document. Right now what I have is an iframe that I do a document.write() on and that shows our results. It turns out that this dominates the performance if you have large results. So, I need to find a much faster way to get the HTML into our results.

So I'm working on the optimization that I talked about, and the other thing is, I'm trying to stay grounded with all of the deadlines for work that are going on, so trying to do a lot of yoga and meditation. Right now, I'm driving down to the YMCA to get my swim on, to get some exercise before driving down to Google.


Frank said…

Your profiling techniques sound really interesting. Is there any possibility of you speaking more about what you did and how you did to profile the application? I'd be interested to learn more.