Subject: Performance -- Re: [xsl] RE:"*NEVER* use for-each" From: "Anjul Srivastava" <anjul@xxxxxxxxxxx> Date: Tue, 27 Feb 2001 12:38:39 -0800 |
> In this age of huge storage devices, ridiculously fast machines, and bloated > OSes, the art of optimization is dwindling. People just don't get how > important optimizing for speed can be. In my case, I MUST be concerned with > speed and size and will likely use a for-each (if I see a gain in testing) > over the "correct" method of using templates. Response time is that > important. I have seen far too many projects being ruined because somebody chose one design over the other because of O(1) performance issues. Unless you are programming the space shuttle, O(1) performance comes LAST, and definitely not at the design stage. At the design stage the concerns are: reduction of complexity (implementation ease), extensibility, reusability, reuse, etc. Even individually, each of these concerns overrides O(1) performance considerations, not to talk of all of them put together. O(1) Performance comes last. When you have successfully developed a product that has made it through the QA cycle, profile your code and look at your hot spots. Then see how can you minimally modify your elegant design to speed up the hot spots. Maybe it might lead you to make your design even more elegant, but then, probably it won't. But wait, don't go make those changes yet. Get feedback from your users. Are they finding it slow? Or would they much rather have you put in your hard work into implementing that cool feature that didn't make it into this version? Okay I went back and put O(1) in front of each instance of the performance work above. Firstly, O(1) performance enhancements are (loosely speaking) those that improve performance by the same percentage for both large input and very large input. The advantage of using classes in C++/Java rather than writing everything in main falls under this category. So does the performance difference (if any) between xsl:templates and xsl:for-each. A performance improvements that are not O(1) is using a binary tree instead of a list to store data that is looked up significantly often. Usually an intelligent designer will either create an abstract design that lets you plug in containers of your choice, or he will be able to anticipate and thus incorporate efficient (in the order sense) containers into his design up front. Somehow I can't imagine a designer thinking, "Gee, how would I store the US yellow pages, hmmm.. I think I'll just use a linked list". In short, whether or not you use "for-each" should depend upon non-performance factors, (unless of course you are writing a stylesheet for use in the spaceshuttle that must be applied within the first three seconds of reentry). XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] RE:"*NEVER* use for-each", Patrick, Curtis W | Thread | RE: Performance -- Re: [xsl] RE:"*N, Kevin Duffey |
RE: [xsl] RE:"*NEVER* use for-each", Patrick, Curtis W | Date | RE: [xsl] RE:"*NEVER* use for-each", Chris Bayes |
Month |