Thanks Adrian, Jacques and David for your valuable thoughts.
David I admire your explanation power. Great Clarification.
Also as Jacques says please recommend a specific profiler tool if possible.

thanks again.

Sumit Pandit

On Dec 15, 2007 6:55 AM, Jacques Le Roux <[EMAIL PROTECTED]>
wrote:

> Thanks a lot David to have taken the time to clearly explain. I'm sure
> this will be helpful for a lot of persons in some
> circonstances.
>
> BTW, would you recommend a specific profiler tool ? I did not use one
> since I use Java, I should say since I use OFBiz...
>
> Jacques
>
>
> De : "David E Jones" <[EMAIL PROTECTED]>
> > 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.
> > >>>
> > >>
> > >
> >
> >
>
>


-- 
Sumit Pandit

Reply via email to