Not sure it's really a science, look more like a collection of recipes to me ;o) With a real science you have preditable results, not with computers (even if in most cases "it works"). There are some good theories but what's really new since Turing machine (joking) ?
Did you know that for each MS developers there are more or less 5 to 10 testers ? Nasa is at least 100 for a developper (not sure about this numbers, just hears about them) ! Jacques PS : seems we need some fun... De : "Jonathon -- Improov" <[EMAIL PROTECTED]> > Cool. Reminds me of the controversy over using antiseptic to aid open wound > healing. > > Most antiseptics were tested in vitro. In vivo tests results recently show > marked differences from > prior in vitro results. > > Hmm. Example... say... PVP-I and cadexomer iodine. PVP-I with low > concentration actually boosts > bacteria growth in open wounds! High concentrations kill repair cells. > Curious how science is so > very very inaccurate, especially in in vitro tests. :) I'm still looking for > published results for > the newer cadexomer starch form. > > Please don't reply. Totally off-topic. Just thought David crafted a cool > explanation of the > science of computing. > > Jonathon > > David E Jones wrote: > > > > It is actually a pretty big deal, and there are very good reasons it was > > integrated into OFBiz. In OFBiz we deal with LOTS of temporary objects, > > especially Maps and Lists, and when doing performance profiling you can > > see the impact of this in the results (ie lots of time creating objects > > and allocating memory, lots of work for the garbage collector to do when > > destroying objects and un-allocating memory). Because of this it makes a > > big difference to use recycled objects like the Javolution FastMap and > > FastList, ie calling FastMap.newInstance() to get an object out of the > > pool of existing FastMap objects rather than calling new HashMap() to > > create a new HashMap each time. > > > > There are actually lots of performance tricks that OFBiz uses, though > > most of the work was done before most of the people now involved with > > OFBiz were around. Early on I spent a few weeks profiling and tweaking > > over the course of a few months as things were being heavily developed. > > Our classpath caching, special purpose internal methods in the entity > > engine, and the use of Javolution for the Fast* objects and for object > > recycling for often used but short-lived things like the GenericValue > > object (which is a recycled object) are all results of that effort. > > > > For other things like get and put operations on a FastMap versus a > > HashMap... I wouldn't expect a whole lot of difference. It may be that > > FastMap does a better job of managing large and scattered hash arrays or > > something but there is really only so much you can do with that as those > > algorithms have been around for a LONG time and have been thoroughly > > reviewed and refined by lots of people. To really get an understanding > > of this would require a bit of research, but it's all very standard > > computer science stuff, so the material is readily available and very > > accessible if you get a decent book or whatever. It is nice stuff to > > know about because these basic data structures and algorithms are what > > everything is based on in modern software and understanding them makes > > it way easier to understand performance impact and interpret the results > > of profiling, as well as understand higher level algorithms and data > > structures like those used in relational databases and such. > > > > Knowing all of that stuff is of course not a substitution for using a > > profiling tool, and in fact those who really understand the stuff know > > all the more how important it is to use profiling tools. The nature of > > the software is that it is very complex, and even if you know it all > > it's hard to remember and grok the importance of certain pieces > > sometimes. In other words it's deterministic, but complex. The most > > experienced people will know that they might be able to guess really > > well and understand really well the general things that might impact > > performance, but until you do profiling and tweaking to see a > > performance difference they are only guesses and guesses aren't proofs, > > and aren't enough if you're trying to be careful and make a real > > difference in something. > > > > In short, doing profiling is great and extremely valuable, as is > > understanding the underlying data structures and algorithms. However, > > neither of them along is sufficient to really understand and describe > > why something is performing a certain way or make a difference in how it > > performs. > > > > -David > > > > > > On Dec 14, 2007, at 1:28 PM, Jacques Le Roux wrote: > > > >> Sumit, Adrian, All, > >> > >> I had a cursory look at it. In abstract, yes this seems to be right > >> > >> Though those lines you took from Google are 4 years old > >> http://www.javalobby.org/java/forums/t9377.html?start=15#reply20 > >> > >> Anyway it seems to be right, here the answer from Javolution Creator > >> (JM Dautelle) > >> The best analogy between FastMap and HashMap would be buying versus > >> renting. With FastMap you pay upfront but you are done with it. > >> With HashMap you pay each time you "put" a new entry (not only when > >> you allocate but also later with the GC interests...). Obviously > >> if you intend to sell your house three months later it does not make > >> sense to buy it. > >> > >> Also interesting is JM Dautelle's this note found at > >> http://javolution.org/doc/benchmark.html > >>> Although it looks nice, I see that some of your collection classes > >>> are not always faster than their Java 6 counterparts. > >> <<Some classes are faster, others are slower (for example > >> ArrayList.get(int) is faster with the -server option, slower without it). > >> Overall, there is no significative difference in average execution > >> time. The main advantage of Javolution collections is that they > >> are time-deterministic (the maximum execution time is very close to > >> the minimum execution time) and they are RTSJ-Safe. > >> They have some additional characteristics such as thread-safe without > >> synchronization, support for custom key/value comparators, > >> direct record iterations (faster than iterators), recyclable, reduced > >> impact on GC (fragmentation or large arrays allocations), > >> support for custom entry implementation (FastMap) or custom node > >> implementation (FastList), etc.>> > >> > >> See also > >> http://noctarius.l2castell.org/download/benchmark_trove_javolution_java.pdf > >> > >> > >> Maybe knowning the real reason(s?) it was integrated in OFBiz would be > >> cool, does not look like a big deal tough, am'I wrong ? > >> > >> Jacques > >> > >> De : "Adrian Crum" <[EMAIL PROTECTED]> > >>> I just spent some time running performance tests on FastMaps and > >>> HashMaps. Calling the get methods > >>> showed no speed difference. The Javalution classes seem to have a > >>> speed advantage in building Maps > >>> and Lists. They claim their FastSet.removeLast method is faster than > >>> the Java library. So, there is > >>> a speed advantage in certain scenarios, but not in all cases. > >>> > >>> -Adrian > >>> > >>> Sumit Pandit wrote: > >>> > >>>> *i have a question please make me correct if i am wrong :-* > >>>> > >>>> if we compare FastMap Vs HashMap, > >>>> > >>>> *FastMap is faster than HashMap so long as the map is long lived and > >>>> relatively predictable in size. If you try to use it as a short-lived > >>>> general replacement for HashMap it may very well kill your performance. > >>>> > >>>> *I found these lines some where in Google. > >>>> so does it mean that we should use HashMap for local variables ? > >>>> > >>>> Also please explain me the performance issue if we use HashMap > >>>> rather then > >>>> FastMap. > >>>> > >>>> Thanks for suggestion. > >>>> > >>> > >> > > >