AOP Overhead
At work, we're in the process of instrumenting our code so that we can collect runtime performance statistics. Windows has PerfMon counters, which are sort of a pain to work with, but are very efficient. In Java on Unix, there's other mechanisms. As a comprimise, we're using log4j and log4net with UDPAppenders to transmit statistics to a machine dedicated to monitoring. However, it's tedious, error-prone, and messy to cut & paste in calls to collect and log timings in code, so it would be nice to have a more transparent method to deal with this cross-cutting concern (you can see where this is going). One of my co-workers is doing a little research into AOP approaches for Java. He came up with the following numbers:
The overhead of one around advice applied to a method call join point:AspectJ 1.1.1 0.000018 ms/call AspectWerkz 0.10 RC1 0.000097 ms/call JBoss AOP 1.0Beta 0.000181 ms/callThe overhead of five around advice applied to a method call join point:AspectJ 1.1.1 0.000097 ms/call AspectWerkz 0.10 RC1 0.000163 ms/call JBoss AOP 1.0Beta 0.000263 ms/call
It's interesting that AspectWerkz seems to amortize the cost of a join point, while AspectJ doesn't. JBoss also seems to amortize the time, but consisttently performs worse than the others.
I've not heard of an AOP implementation for .NET, it seems like it would be an interesting project. I know John Lam, Craig Andera and Clemens Vasters experimented with AOP, but as I recall, both were doing an AspectJ style approach, modifying the .NET IL. AspectWerkz seems to have a very approachable implementation, I wonder what it would take to do an AspectWerkz style implementation in .NET. I don't have any illusions about using AOP as a generalized programming model, but logging is the prime use case for this approach and I believe that it could be very useful in this case.
— Gordon Weakliem at permanent link
More Postmodern Spam
Are there a lot of these types of accidents? We're going to regret this, my friend said. Suddenly, she wasn't there. It was cold and sweet. It was cold and sweet. (I'd seen something really weird. :) Love, and hate, are powerful emotions. (I'd seen something really weird. :) I can never describe the walk back to my truck. He wanted to know more. I want you to hit me as hard as you can. (I'd seen something really weird. :) And for ten minutes, he was a hero. My job was to apply the formula. (Things were looking worse.) I'll tell you what happened next. Are there a lot of these types of accidents? Z3dlYWtsaWVtQHlhaG9vLmNvbQ==What's funny is that last jumble of garbage is my email address, base-64 encoded. So the random text generation isn't especially random, it's more like it's pulling sentences from a library and shuffling them in random order. There's no way that Spambayes would still let these emails through after 10 days. Yahoo! Mail has some work to do here.
— Gordon Weakliem at permanent link
Small Ideas
I like how the author scrupulously avoids the term "B2B", but aside from that, these ideas are remarkably unremarkable. The latter idea already exists; it's called Priceline. The former idea is called a "package tour", travel agents have been selling them for years. I'm just stunned that it's taken so long to get around to implementing them online, but I'm also stunned at the straw man use-cases used. If Orbitz is using the same ski conditions I'm used to seeing, I hope they know the algorithm for reading them: subtract 40% from the daily snow totals, subtract 1 level from the snow conditions (powder = packed powder, spring conditions = water pouring off the mountain).Other than social networking, tech companies are talking about how the new-generation Internet will allow different Web sites to "talk" to one another and automatically exchange information. While businesses have been using this aspect of the technology for a while, it's starting to generate consumer offerings.
I talked with Chris Hjelm, the chief technology officer of Orbitz, about how that will affect the travel sites. One simple example is that soon users will be able to define a vacation they'd like to plan - for instance, skiing in March at a family-friendly resort in the Rockies - and a price they're willing to pay. Orbitz could search its database as well as look at, say, ski conditions that are posted on other sites. Finally, it would send you a few possible packages, including flights, car, hotel, lift ticket costs and so on. "We could really speed up the discovery process," Hjelm says.