Download A Partitioned Rendering Infrastructure for Stable Accordion Navigation
Transcript
3.3.2 Marked ranges in TJ2 There were several changes made to improve on the performance of the implementation of marked ranges in TJ1, most notably using a binary tree to sort and store RangeInT ree objects. TJ2 no longer caches results for each node, since color lookup for ranges of nodes is sufficiently fast; we improve scalability by not caching colors for each tree node. The efficiency issues mentioned in Section 3.3.1 are dealt with in the following topics: RangeLists combining adjacent or overlapping RangeInT ree objects; storing RangeInT ree objects in binary trees; and RangeList storing nodes for implicitly user-marked nodes. Combining adjacent RangeInT ree objects Automated marking from operations like computed differences and search results often return several adjacent, non-unique, or overlapping RangeInT ree objects, all of which we refer to as overlapping ranges. TJ2 combines RangeInT ree objects by searching the RangeList binary tree for overlapping ranges, combining any overlapping ranges with the RangeInT ree, repeating the process until no more overlapping ranges are found, and finally adding the new non-overlapping RangeInT ree to the RangeList. This repeated searching is necessary with the data structures we use for our binary tree implementation, namely the Java T reeSet, which cannot return the entire set of overlapping ranges in a single function call. RangeList collections as binary trees We sort the RangeInT ree objects in a binary tree by their minimum node key values; the sorting criteria could actually use any node key in the range since there are no overlapping ranges in RangeList binary trees. Since each RangeInT ree is accessible in time logarithmic to the number of marked items, the performance improvement is a dramatic improvement for large numbers of marked items, often resulting from hundreds of either differences or search results. 50