2009.07.26
Karl Gustafsson
Unit tests
  64 bit Linux
  32 bit Linux
  64 bit Solaris 10
  Mac OS X
  64 bit Windows Vista
  32 bit Windows Vista
Performance tests
  Compare graphs 
Unit tests were run as described in the Programmer's guide.
| JVM | Results | 
| Sun JDK 1.5.0_19 (64 bit) | OK, 11/11 | 
| Sun JDK 1.6.0_14 (64 bit) | OK, 12/12 | 
| IBM J9 JVM build 2.3 1.5.0 SR9-SSU (64 bit) | OK, 11/11 | 
| IBM J9 JVM build 2.4 1.6.0 SR5 (64 bit) | OK, 12/12 | 
| OpenJDK 6b14-1.4.1-0ubuntu10 (64 bit) | OK, 12/12 | 
| JVM | Results | 
| Sun JDK 1.5.0_19 | OK, 11/11 | 
| Sun JDK 1.6.0_14 | OK, 12/12 | 
| IBM J9 JVM build 2.3 1.5.0 SR9-SSU | OK, 11/11 | 
| IBM J9 JVM build 2.4 1.6.0 SR5 | OK, 12/12 | 
| OpenJDK 6b14-1.4.1-0ubuntu10 | OK, 12/12 | 
| JVM | Results | 
| Sun JDK 1.5.0_19 (64 bit) | OK, 11/11 | 
| Sun JDK 1.6.0_14 (64 bit) | OK, 12/12 | 
| JVM | Results | 
| Apple JDK 1.5.0_19_b02-304 (64 bit) | OK, 11/11 | 
| Apple JDK 1.6.0_13_b03-211 (64 bit) | OK, 12/12 | 
| JVM | Results | 
| Sun JDK 1.5.0_19 (64 bit) | OK, 11/11 | 
| Sun JDK 1.6.0_14 (64 bit) | OK, 12/12 | 
| JVM | Results | 
| Sun JDK 1.5.0_19 | OK, 11/11 | 
| Sun JDK 1.6.0_14 | OK, 12/12 | 
Performance tests were run as described in the Programmer's
guide. The tests suite contains the following tests, run for n databases in each suite:
x records in an empty database using Database.insert. Commit.x records from the database using Database.get.x keys using Database.keyIterator.x records using Database.iterator.y additional records using Database.insert. Commit.y additional records using Database.update. Commit.y additional records using Database.delete. Commit.x records using Database.update. Commit.x/3 records (every 3rd record) using Database.delete. Commit.The tests were run for the following configurations:
| # | Database | DatabaseBackend | Additional settings | 
| 1 | SimpleDatabase | ConstantRecordSizeHeapBackend | |
| 2 | SimpleDatabase | BPlusTreeIndexBackend and ConstantRecordSizeHeapBackend | B+ Tree node size: 4096 bytes | 
| 3 | SimpleDatabase | BPlusTreeIndexBackend and ConstantRecordSizeHeapBackend | B+ Tree node size: 4096 bytes, node cache: 30 nodes | 
| 4 | SimpleDatabase | ConstantRecordSizeBPlusTreeBackend | B+ Tree node size: 4096 bytes | 
| 5 | SimpleDatabase | ConstantRecordSizeBPlusTreeBackend | B+ Tree node size: 4096 bytes, node cache: 10 nodes | 
| 6 | SimpleDatabase | ConstantRecordSizeBPlusTreeBackend | B+ Tree node size: 4096 bytes, node cache: 30 nodes | 
| 7 | SimpleDatabase | ConstantRecordSizeBPlusTreeBackend | B+ Tree node size: 4096 bytes, node cache: 50 nodes | 
| 8 | SimpleDatabase | HeapBackend | |
| 9 | SimpleDatabase | BPlusTreeIndexBackend and HeapBackend | B+ Tree node size: 4096 bytes | 
| 10 | SimpleDatabase | BPlusTreeIndexBackend and HeapBackend | B+ Tree node size: 4096 bytes, node cache: 30 nodes | 
| 11 | LoggingTransactionalDatabase | ConstantRecordSizeHeapBackend | |
| 12 | LoggingTransactionalDatabase | BPlusTreeIndexBackend and ConstantRecordSizeHeapBackend | B+ Tree node size: 4096 bytes | 
| 13 | LoggingTransactionalDatabase | BPlusTreeIndexBackend and ConstantRecordSizeHeapBackend | B+ Tree node size: 4096 bytes, node cache: 30 nodes | 
| 14 | LoggingTransactionalDatabase | ConstantRecordSizeBPlusTreeBackend | B+ Tree node size: 4096 bytes | 
| 15 | LoggingTransactionalDatabase | ConstantRecordSizeBPlusTreeBackend | B+ Tree node size: 4096 bytes, node cache: 30 nodes | 
| 16 | LoggingTransactionalDatabase | HeapBackend | |
| 17 | LoggingTransactionalDatabase | BPlusTreeIndexBackend and HeapBackend | B+ Tree node size: 4096 bytes | 
| 18 | LoggingTransactionalDatabase | BPlusTreeIndexBackend and HeapBackend | B+ Tree node size: 4096 bytes, node cache: 30 nodes | 
| 19 | ShadowCopyTransactionalDatabase | ConstantRecordSizeHeapBackend | |
| 20 | ShadowCopyTransactionalDatabase | BPlusTreeIndexBackend and ConstantRecordSizeHeapBackend | B+ Tree node size: 4096 bytes | 
| 21 | ShadowCopyTransactionalDatabase | BPlusTreeIndexBackend and ConstantRecordSizeHeapBackend | B+ Tree node size: 4096 bytes, node cache: 30 nodes | 
| 22 | ShadowCopyTransactionalDatabase | ConstantRecordSizeBPlusTreeBackend | B+ Tree node size: 4096 bytes | 
| 23 | ShadowCopyTransactionalDatabase | ConstantRecordSizeBPlusTreeBackend | B+ Tree node size: 4096 bytes, node cache: 30 nodes | 
| 24 | ShadowCopyTransactionalDatabase | HeapBackend | |
| 25 | ShadowCopyTransactionalDatabase | BPlusTreeIndexBackend and HeapBackend | B+ Tree node size: 4096 bytes | 
| 26 | ShadowCopyTransactionalDatabase | BPlusTreeIndexBackend and HeapBackend | B+ Tree node size: 4096 bytes, node cache: 30 nodes | 
The tests for each database configuration were run with the following values
for n, x and y, with different maximum
y values for different test suites.
| n | x | y | 
| 500 | 0 | 5 | 
| 500 | 10 | 5 | 
| 500 | 50 | 5 | 
| 200 | 100 | 5 | 
| 100 | 500 | 10 | 
| 100 | 1,000 | 10 | 
| 20 | 5,000 | 50 | 
| 10 | 10,000 | 50 | 
| 1 | 50,000 | 100 | 
| 1 | 100,000 | 100 | 
| 1 | 500,000 | 100 | 
| 1 | 1,000,000 | 100 | 
| 1 | 5,000,000 | 100 | 
The tests with constant record size backends were run with Integer keys and Long values. The tests with variable record size backends were run with String keys and values varying randomly between 4 and 20 characters in size. (All test data is generated before the tests are run.)
The test were run on JDK 1.6.0_14 on a 64 bit Linux.
B+ Tree node size = 4096 bytes, no LRU node cache
B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes
B+ Tree node size = 4096 bytes, no LRU node cache
B+ Tree node size = 4096 bytes, LRU node cache = 10 nodes
B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes
B+ Tree node size = 4096 bytes, LRU node cache = 50 nodes
B+ Tree node size = 4096 bytes, no LRU node cache
B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes
B+ Tree node size = 4096 bytes, no LRU node cache
B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes
B+ Tree node size = 4096 bytes, no LRU node cache
B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes
B+ Tree node size = 4096 bytes, no LRU node cache
B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes
B+ Tree node size = 4096 bytes, no LRU node cache
B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes
B+ Tree node size = 4096 bytes, no LRU node cache
B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes
B+ Tree node size = 4096 bytes, no LRU node cache
B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes
| [Linear axes] [Logarithmic x-axis] [Logarithmic y-axis] [Logarithmic x- and y-axes] | 
| [Linear axes] [Logarithmic x-axis] [Logarithmic y-axis] [Logarithmic x- and y-axes] |