Larry wrote: " The fence is not a general selection solution.  It is a
very specialized one.  With my new Extract Layer in Fence plugin, I
can create smaller subsets of the million point layer in seconds.
Selection will not do this at all."

Understood. You are building a special tool for a special
circumstance. There is nothing wrong with that as long as we keep it
as a plug-in. I only spoke up before because I thought we were talking
about integrating this into the core as a major "selection
alternative". Thank you for clearing up my misconception.

Larry wrote: "As to which use cases are "normal "and which are
"extreme", this is a moving target.  Personally, I am happy when I see
people stretching the limits of JUMP.  Nothing makes inefficient code
apparent like extreme cases."

This is a perspective that I hadn't considered. There is no arguing
that you are the best OpenJUMP programmer when it comes to identifying
and fixing performance bottlenecks, at least in my opinion. Your fixes
have been great!

I still think there is a balance to be maintained. Every performance
fix comes with a cost in manpower and refactoring. We should remember
to ask "is this really worth it" before those changes are made. I
guess this is the old cost-benefit argument.

I do trust your judgement in this regard Larry. If you have
suggestions on how to improve the performance of the existing
selection code I'd like to hear about them. Maybe I can visit this
area of the code again in the future.

The Sunburned Surveyor

On 10/8/07, Sunburned Surveyor <[EMAIL PROTECTED]> wrote:
> Michael,
>
> I can offer a tiny bit of insight into OpenJUMP's selection code. What
> I'm about to tell you is part of what I hope to document about the
> selection system when I'm done squishing bugs on my Super Select Tool.
>
> OpenJUMP uses collections and something called a CollectionMap quite
> extensively in the selection code. (A CollectionMap is a utility class
> used by vivid Solutions in JUMP. It is a Map whose values are other
> Collections.)
>
> At a bare minimum OpenJUMP maintains a single CollecctionMap for each
> layer that contains selected items. The keys of this CollectionMap are
> the selected Features and the values are another Collection. The
> Collections stored as values are LinkedLists (I believe) and they
> contain the "items" of the selected Features. In most cases this is
> just the JTS Geometry object representing the selected Feature, but in
> some cases it might be the "parts" of a JTS Geometry. (A sement of a
> polygon ring, for example.)
>
> As far as I can tell the CollectionMap is not deleted once it is
> created (as long as the instance of OpenJUMP is running) although it
> may be "empty" if no features in the correspongind layer are selected.
>
> If I remember correctly several other collections are created in the
> process of "drilling down" to the correct "items" to select based on
> user actions.
>
> I know that I am a rookie code slinger, but I found that the selection
> code in OpenJUMP was a real challenge to understand. I hope to
> supplement/add some Javadoc comments that might make it easier on the
> next programmer to venture that direction.
>
> I hope my tiny bit of info about the selection code will shed some
> light on the topic being discussed currently.
>
> The Sunburned Surveyor
>
>
> On 10/8/07, Michaël Michaud <[EMAIL PROTECTED]> wrote:
> > Hi Larry,
> >
> > May be I did not understand your solution, but I think like SS, that
> > selecting with a fence is not a general solution for the selection
> > problem. A selection can be the result of a query or any set of features
> > without any particular spatial relationship.
> > I wonder why collections containing selection are so "huge". Basically,
> > a selection should be a set of handles (or a little more to be able to
> > manage geometry parts).
> > In the case of a large point layer without attribute, the selection size
> > may be comparable to the feature layer size, but it should stay smaller,
> > and it is really a worst case.
> > Maybe there are other reasons why the selection is so large and slow :
> > hard copy of features, cache, undo/redo management ?
> >
> > Anyway, thanks for the continuous improvement of OpenJUMP performances.
> >
> > Michaël
> >
> > Larry Becker a écrit :
> >
> > > Hi SS,
> > >
> > >   I agree that the problem with selection is the large collections
> > > being generated.  "Parts" are only part of the problem and it is a bit
> > > late to stop supporting this capability.  Optimizations are always
> > > possible, but only if you have a clear understanding of what you are
> > > optimizing and use benchmarks for metrics.
> > >
> > > Larry
> > >
> > > On 10/8/07, *Sunburned Surveyor* <[EMAIL PROTECTED]
> > > <mailto:[EMAIL PROTECTED]>> wrote:
> > >
> > >     This sounds like a great solution Larry, but I was wondering if you
> > >     might be able to confirm why selection requires more memory than a
> > >     fence.
> > >
> > >     Is it because when you use "selection" a bunch of Java collections
> > >     are
> > >     created, whereas when you use a fence, you are just creating a
> > >     geometry? Is it because with the fence no data structures for the
> > >     features within the fence are created until you actually want to do
> > >     something?
> > >
> > >     The only problem I see with using a fence is that it wouldn't allow
> > >     complex selections. (For example, if I use a fence all the features
> > >     are the fence are in the "quasi-selection".I can't go in an remove
> > >     some items from the quasi-selection. Does this make sense?)
> > >
> > >     I worked with some of the selection code recently, and it seemed very
> > >     complex to me. There were so many collections being used in the code I
> > >     had to write the purpose of each one down on a scratch pad so I could
> > >     keep track. It seems that most of this complexity was a result of
> > >     OpenJUMP's ability to select parts of Features, and not being
> > >     restricted to selection of whole features.
> > >
> > >     I wonder if we couldn't come up with a much simpler selection system
> > >     that only selected whole features. We could probably do this using a
> > >     single collection that stored only the FID of a Feature, or an object
> > >     reference to the Feature. A collection of a couple million FID values
> > >     would only be a couple of MB correct?
> > >
> > >     Perhaps your idea with the fence is best, but I'm thinking it might be
> > >     better to address the complexity in the selection system itself.
> > >
> > >     I wonder how much people are using OpenJUMP's ability to select
> > >     "parts" of features.
> > >
> > >     Just my thoughts. I don't think it would take me long to cook up the
> > >     simple "whole-feature-selection-only" system I am talking about.
> > >
> > >     The Sunburned Surveyor
> > >
> > >     On 10/8/07, Stefan Steiniger <[EMAIL PROTECTED]
> > >     <mailto:[EMAIL PROTECTED]>> wrote:
> > >     > simple solution and well thought :)
> > >     >
> > >     > we should go for
> > >     >
> > >     > stefan
> > >     >
> > >     > Larry Becker wrote:
> > >     >
> > >     > > Hi,
> > >     > >
> > >     > >   Recent work with Extract Layers by Geometry Type, and improving
> > >     > > OpenJump's support for very large selections, has convinced me
> > >     that
> > >     > > JUMP needs a mechanism for dealing with subsets of large layers.
> > >     > > Although the selection mechanism is very flexible, it is very
> > >     > > expensive in terms of memory and processing.  To seem what I mean,
> > >     > > consider Arnd's million point layer problem.  To break the
> > >     layer into
> > >     > > more manageable pieces, he tried to select some of the points
> > >     and move
> > >     > > them to another layer.  When this is done with such a large
> > >     selection,
> > >     > > the UI must build gigantic data structures.  The result is an
> > >     > > extremely slow response or an out of memory error.
> > >     > >
> > >     > > An approach that might work for some problems is to use the
> > >     Fence tool
> > >     > > to indicate a subset of the data that can be used in place of a
> > >     > > selection.  The advantage is that no data structures are
> > >     needed and
> > >     > > there are no selection handles to draw.  I was thinking of
> > >     producing
> > >     > > another Layer Extract plugin that would extract features in
> > >     the Fence
> > >     > > to a new layer.  By coding support methods in a utility class, we
> > >     > > could gradually add support for "features in fence" subsets to the
> > >     > > other tools.
> > >     > >
> > >     > > What do you think?
> > >     > >
> > >     > > regards,
> > >     > >
> > >     > > Larry Becker
> > >     > >
> > >     > > --
> > >     > > http://amusingprogrammer.blogspot.com/
> > >     > >
> > >     >
> > >     
> > > >------------------------------------------------------------------------
> > >     > >
> > >     >
> > >     
> > > >-------------------------------------------------------------------------
> > >     > >This SF.net email is sponsored by: Splunk Inc.
> > >     > >Still grepping through log files to find problems?  Stop.
> > >     > >Now Search log events and configuration files using AJAX and a
> > >     browser.
> > >     > >Download your FREE copy of Splunk now >> http://get.splunk.com/
> > >     > >
> > >     >
> > >     
> > > >------------------------------------------------------------------------
> > >     > >
> > >     > >_______________________________________________
> > >     > >Jump-pilot-devel mailing list
> > >     > >Jump-pilot-devel@lists.sourceforge.net
> > >     <mailto:Jump-pilot-devel@lists.sourceforge.net>
> > >     > >https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> > >     <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel>
> > >     > >
> > >     > >
> > >     >
> > >     >
> > >     >
> > >     
> > > -------------------------------------------------------------------------
> > >     > This SF.net email is sponsored by: Splunk Inc.
> > >     > Still grepping through log files to find problems?  Stop.
> > >     > Now Search log events and configuration files using AJAX and a
> > >     browser.
> > >     > Download your FREE copy of Splunk now >> http://get.splunk.com/
> > >     > _______________________________________________
> > >     > Jump-pilot-devel mailing list
> > >     > Jump-pilot-devel@lists.sourceforge.net
> > >     <mailto:Jump-pilot-devel@lists.sourceforge.net>
> > >     > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> > >     >
> > >
> > >     
> > > -------------------------------------------------------------------------
> > >     This SF.net email is sponsored by: Splunk Inc.
> > >     Still grepping through log files to find problems?  Stop.
> > >     Now Search log events and configuration files using AJAX and a
> > >     browser.
> > >     Download your FREE copy of Splunk now >> http://get.splunk.com/
> > >     _______________________________________________
> > >     Jump-pilot-devel mailing list
> > >     Jump-pilot-devel@lists.sourceforge.net
> > >     <mailto:Jump-pilot-devel@lists.sourceforge.net>
> > >     https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> > >     <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel>
> > >
> > >
> > >
> > >
> > > --
> > > http://amusingprogrammer.blogspot.com/
> > >
> > >------------------------------------------------------------------------
> > >
> > >-------------------------------------------------------------------------
> > >This SF.net email is sponsored by: Splunk Inc.
> > >Still grepping through log files to find problems?  Stop.
> > >Now Search log events and configuration files using AJAX and a browser.
> > >Download your FREE copy of Splunk now >> http://get.splunk.com/
> > >
> > >------------------------------------------------------------------------
> > >
> > >_______________________________________________
> > >Jump-pilot-devel mailing list
> > >Jump-pilot-devel@lists.sourceforge.net
> > >https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> > >
> > >
> >
> >
> > -------------------------------------------------------------------------
> > This SF.net email is sponsored by: Splunk Inc.
> > Still grepping through log files to find problems?  Stop.
> > Now Search log events and configuration files using AJAX and a browser.
> > Download your FREE copy of Splunk now >> http://get.splunk.com/
> > _______________________________________________
> > Jump-pilot-devel mailing list
> > Jump-pilot-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >
>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to