Curl Blog : May 30, 2008

Previous Next

2

Recently we wrote about some performance measurements showing Curl to be an order of magnitude faster than ActionScript 3 when executing a JPEG encoding algorithm. Our report hit a nerve with Ted Patrick at Adobe, causing him to question

  1. Who cares about JPEG encoding performance in an RIA anyhow? Is there a single mainstream RIA that uses it?
  2. Are the results of any performance benchmark really meaningful? and
  3. Which is more important anyway, performance or wide deployment?

I'd like to address these points. First, JPEG encoding is important in some of Adobe's own applications. The Adobe AIR Salesbuilder application has a feature that can save a snapshot of your dashboard as a JPEG file on your desktop. The Salesbuilder demo script warns that this operation "can take a few seconds." This usability glitch is directly a function of the JPEG encoding speed that we studied. For a more compelling example, consider the recently launched Adobe Photoshop Express service. It can only run in on-line mode, and processing-intensive operations such as JPEG encoding are handled on the server, but if you ever wanted to create an offline, Adobe AIR style of application like this, JPEG encoding speed would absolutely matter. Given the importance of photo sharing and processing in the Web economy, can we really say that this task is not significant?

But for us, JPEG encoding is just a representative of a much larger set of tasks that a truly powerful RIA will have to do, which require application-specific coding in the inner loops. These tasks cannot be structured as just a series of calls from a scripting language to a set of predefined, pre-optimized modules that are bundled into the RIA plugin. For example, a typical requirement for enterprise dashboard applications is to handle a "data cube" model with thousands of data points in it. (See the Curl Business Intelligence Demonstration on our enterprise demos page for one example.) No RIA platform includes data cubes as a primitive data type, so even the inner loops of the code that distills information from the data cube to the presentation have to be written as part of the RIA application, where they are subject to the same performance laws as our JPEG encoding case study.

Regarding question (2), we think our benchmark test was pretty fair because we just used the same coding structure that is used in Adobe's own code. However, we would welcome any interest from Adobe in improving their ActionScript for JPEG encoding and reporting on the results!

Finally, the value of wide deployment over performance varies a lot depending on your situation. In many scenarios, wide deployment is very important. Heck, we use Flash ourselves to add some visual punch to our corporate home page that all comers can enjoy! For this kind of application, wide deployment often trumps performance and you adjust your ambitions, if necessary, to fit the constraints of the platform.

But Curl has excelled for enterprise applications and is already in use by more than 300 companies, many of them household names, for mission-critical applications. These applications aren't too visible because most of them exist entirely behind corporate firewalls, but they testify that Curl is in fact a trustworthy, industrial-strength platform. For this type of customer, breadth of deployment on the Internet is absolutely not the issue; the capability of the platform to host powerful, responsive applications is.

2 Comments 0 References Permalink
2

This note is to announce, belatedly, that Friedger, our first Curl developer community MVP, has joined the Curl Development Utilites (CDU) Open Source project.

Friedger has offered to contribute some of his IDE extensions to open source. The CDU project is the natural place for those to be made available, as its aim is to consolidate useful development techniques.

The CDU originated as internal tools supporting development of external libraries like the WSDK. It provides a test framework, and build drivers. That functionality is now used by both WSDK and CDK open source projects.

Welcome to the project, Friedger!

2 Comments 0 References Permalink