You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by robert engels <re...@ix.netcom.com> on 2008/07/23 22:01:54 UTC
performance optimizations
I hope this doesn't offend anyone, but I think this is an excellent
article that the Lucene development team might find helpful.
I have often been dismayed at complex code being written to achieve
"negligible" performance improvements. Most often, a micro benchmark
is used to justify the change.
Worse, spending effort putting hacks into Lucene when they are
clearly JVM bugs. I think it would be a far better use of resources
to lobby Sun/others through the appropriate channels to get the
underlying issue corrected.
I know that there have been many performance improvements in Lucene
as of late, but almost all of these have been algorithm changes - not
obscure bit twiddling...
Anyway, it is at http://java.sun.com/developer/technicalArticles/
Interviews/community/pepperdine_qa.html
Robert
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org
Re: performance optimizations
Posted by robert engels <re...@ix.netcom.com>.
True to an extent, but you may have missed the authors point - by
coding complex bit twiddling routines, you often mess up the
optimizer in the JIT (and others), possibly preventing better
performance later (as the JIT continually improves). Worse, the code
is being changed in a very haphazard fashion. For example, the
commit stuff - there is already a deprecated interface
(IndexCommitPoint) in a brand new feature - this certainly smells of
poor planning/design to me... This wasn't changed for strictly
performance reasons, but I think you get the idea.
I am not against using more efficient data structures and algorithms
- just seems that many of these changes are micro benchmarked, and in
a real environment would have little benefit , yet they have been
added and the code changed for the worse (unless in the rare case the
new code is simpler).
It also seems that many more "obscure, index corruption" type bugs
have crept in as the pursuit of performance has taken place, whereas
the 1.9 and prior code was very stable.
If you could gain 10% performance, by making the code 50% more
complex, to run on a 1.5 JVM, when the existing code works 30% faster
on a 1.6 JVM (on the same hardware), do you do it? Many would argue
that "it depends on your user base demographics". I would counter
that NEVER is the correct choice, as eventually your users will move
to 1.6, so why live with the bad code. That you can plug replace at
runtime still doesn't solve the issue, as you have twice as much code
to continually debug and test.
On Jul 23, 2008, at 3:23 PM, Yonik Seeley wrote:
> Making well reasoned arguments about specific patches would be
> helpful.
> Also, the complexity vs speed trade-offs are different for core
> library like Lucene where performance is one of the primary features.
>
> -Yonik
>
> On Wed, Jul 23, 2008 at 4:01 PM, robert engels
> <re...@ix.netcom.com> wrote:
>> I hope this doesn't offend anyone, but I think this is an
>> excellent article
>> that the Lucene development team might find helpful.
>>
>> I have often been dismayed at complex code being written to achieve
>> "negligible" performance improvements. Most often, a micro
>> benchmark is used
>> to justify the change.
>>
>> Worse, spending effort putting hacks into Lucene when they are
>> clearly JVM
>> bugs. I think it would be a far better use of resources to lobby
>> Sun/others
>> through the appropriate channels to get the underlying issue
>> corrected.
>>
>> I know that there have been many performance improvements in
>> Lucene as of
>> late, but almost all of these have been algorithm changes - not
>> obscure bit
>> twiddling...
>>
>> Anyway, it is at
>> http://java.sun.com/developer/technicalArticles/Interviews/
>> community/pepperdine_qa.html
>>
>> Robert
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-dev-help@lucene.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org
Re: performance optimizations
Posted by Yonik Seeley <yo...@apache.org>.
Making well reasoned arguments about specific patches would be helpful.
Also, the complexity vs speed trade-offs are different for core
library like Lucene where performance is one of the primary features.
-Yonik
On Wed, Jul 23, 2008 at 4:01 PM, robert engels <re...@ix.netcom.com> wrote:
> I hope this doesn't offend anyone, but I think this is an excellent article
> that the Lucene development team might find helpful.
>
> I have often been dismayed at complex code being written to achieve
> "negligible" performance improvements. Most often, a micro benchmark is used
> to justify the change.
>
> Worse, spending effort putting hacks into Lucene when they are clearly JVM
> bugs. I think it would be a far better use of resources to lobby Sun/others
> through the appropriate channels to get the underlying issue corrected.
>
> I know that there have been many performance improvements in Lucene as of
> late, but almost all of these have been algorithm changes - not obscure bit
> twiddling...
>
> Anyway, it is at
> http://java.sun.com/developer/technicalArticles/Interviews/community/pepperdine_qa.html
>
> Robert
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org