Archived

If you are looking for the last documentation in the 4.x series, see 4.7.5. Looking for another version? See all documentation.

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

Modeshape 4.4.0 includes several new mixins that change the behavior for storing children of Nodes.  Adding these mixins triggers storing child nodes in a progressively larger number of buckets, which is intended to improve performance with large numbers of children.  See Modeshape's Unordered Large Collection documentation for more information.

Containers Tested

NameContainerChild Nodes
PairTreedefaultdefault auto-generated IDs
Flatdefaultall children created directly in the container
Tinymode:unorderedTinyCollectionall children created directly in the container
Smallmode:unorderedSmallCollectionall children created directly in the container
Largemode:unorderedLargeCollectionall children created directly in the container
Hugemode:unorderedHugeCollectionall children created directly in the container

Tests

Creating Containers

For each type tested (Flat, Tiny, Small, Large, Huge), use Curl to create 100 children.  Count the number of seconds to create the 100 children (write time).

  • Status: Errors after 20K children created in each container
  • Write Performance: Tiny and Small performed best, scaling smoothly through 20K children; Flat and Large slowed more; and Huge slowed dramatically.

Chart showing seconds to create 100 children:

Creating and Reading Containers

For each type tested (PairTree, Flat, Tiny and Small), use Curl to create 100 children, list children in the container, and retrieve 100 children.  Count the number of seconds to create the 100 children (write time), and the number of seconds to list and retrieve the children (read time).

  • Status: 50K children created in each container
  • Read Performance: Tiny and Small are scaling smoothly; Flat and PairTree are slower and increasingly variable after 25K children.
  • Write Performance: PairTree, Tiny, and Small are scaling smoothly; Flat is slowing down much more dramatically and increasingly variable starting around 12K children.

Chart showing seconds to create and read 100 children:

Creating and Reading Containers (Part 2)

Based on the previous test, the Tiny and Small unordered collections seemed the most promising.  Repeat the previous test with only Tiny and Small containers, and continue testing with larger numbers of children to see how many children they can contain before performance degrades.

  • Status: Test still running, 170K children created in each container so far
  • Read Performance: Both scaling smoothly through 100K children, and becoming more erratic afterwards, with Small performing marginally better.
  • Write Performance: Both scaling smoothly, with Small performing significantly better.

  • No labels