Another angle I'm looking at is speeding up DX's "invalid" handling.
I'm finding that the same module flow on a dataset with 5% contiguous
invalid positions (~94k invalid) takes about 4 times longer to run than one
with no invalid positions!

     A little performance analysis shows that an amazing 40% of the total
time is spent in IsElementMarked(), a simple little routine used to test
whether a position/connection/face/... index is invalid.  Virtually all of
that time weighs in accessing IC_SORTED_LIST InvalidComponents (the type of
the "invalid positions" component generated by Include), mostly tied up in
the binary search at invalid.c:2952-2958.

     My gut feeling is that once DX hits some threshold number of elements
in a IC_SORTED_LIST InvalidComponentHandle, it should bite the bullet and
switch to something with a bit better lookup performance like an
IC_DEP_ARRAY or IC_HASH InvalidComponenetHandle.

     Anyone have other thoughts around this that don't require DX mods?

Thanks,

Randy

-- 
Randall Hopper (mailto:[EMAIL PROTECTED])
Lockheed Martin Operation Support
EPA Scientific Visualization Center
US EPA MD/24 ERC-1A; RTP, NC 27711

Reply via email to