HeliDB 1.1 test report

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

Unit tests were run as described in the Programmer's guide.

64 bit Linux

OS:
Xubuntu 9.04 64 bit, Linux 2.6.28-11-generic SMP
File system:
tmpfs
Hardware:
Intel Core 2 Quad Q9550 @ 2.83GHz
8192 Mb RAM
Western Digital Raptor (3.5", 10,000 RPM, SATA)

JVMResults
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



32 bit Linux

OS:
Xubuntu 9.04 32bit, Linux 2.6.28-13-generic
File system:
tmpfs
Hardware:
Intel Pentium M 2.0 GHz stepping 08
2048 Mb RAM
Hitachi HTE726060M9AT00 (2.5", 7,200 RPM, ATA)

JVMResults
Sun JDK 1.5.0_19OK, 11/11
Sun JDK 1.6.0_14OK, 12/12
IBM J9 JVM build 2.3 1.5.0 SR9-SSUOK, 11/11
IBM J9 JVM build 2.4 1.6.0 SR5OK, 12/12
OpenJDK 6b14-1.4.1-0ubuntu10OK, 12/12



64 bit Solaris 10

OS:
Solaris 10 5/09
File system:
UFS
Hardware:
Intel Xeon E5420 @ 2.5GHz
8192 Mb RAM
RAID 10 array

JVMResults
Sun JDK 1.5.0_19 (64 bit)OK, 11/11
Sun JDK 1.6.0_14 (64 bit)OK, 12/12



Mac OS X

OS:
Mac OS X 10.5.7
File system:
HFS
Hardware:
Intel Core 2 Duo @ 2GHz
2048 Mb RAM

JVMResults
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



64 bit Windows Vista

OS:
Windows Vista Business SP2 64bit
File system:
NTFS
Hardware:
Intel Core 2 Duo T7500 @ 2.2GHz
4096 Mb RAM
Seagate ST9160823AS (2.5", 7,200 RPM, SATA)

JVMResults
Sun JDK 1.5.0_19 (64 bit)OK, 11/11
Sun JDK 1.6.0_14 (64 bit)OK, 12/12



32 bit Windows Vista

OS:
Windows Vista Enterprise SP2
File system:
NTFS
Hardware:
Intel Core2 Duo U7600 @ 1.2Ghz
2048 Mb RAM
Toshiba MK1011GAH (1.8", 4,200 RPM, ATA)

JVMResults
Sun JDK 1.5.0_19OK, 11/11
Sun JDK 1.6.0_14OK, 12/12



Performance tests

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:

  1. Insert x records in an empty database using Database.insert. Commit.
  2. Find x records from the database using Database.get.
  3. Iterate over x keys using Database.keyIterator.
  4. Iterate over x records using Database.iterator.
  5. Insert y additional records using Database.insert. Commit.
  6. Update the y additional records using Database.update. Commit.
  7. Delete the y additional records using Database.delete. Commit.
  8. Update x records using Database.update. Commit.
  9. Delete x/3 records (every 3rd record) using Database.delete. Commit.
  10. Compact the database using Database.compact. Commit.

The tests were run for the following configurations:

#DatabaseDatabaseBackendAdditional settings
1SimpleDatabaseConstantRecordSizeHeapBackend
2SimpleDatabaseBPlusTreeIndexBackend and ConstantRecordSizeHeapBackendB+ Tree node size: 4096 bytes
3SimpleDatabaseBPlusTreeIndexBackend and ConstantRecordSizeHeapBackendB+ Tree node size: 4096 bytes, node cache: 30 nodes
4SimpleDatabaseConstantRecordSizeBPlusTreeBackendB+ Tree node size: 4096 bytes
5SimpleDatabaseConstantRecordSizeBPlusTreeBackendB+ Tree node size: 4096 bytes, node cache: 10 nodes
6SimpleDatabaseConstantRecordSizeBPlusTreeBackendB+ Tree node size: 4096 bytes, node cache: 30 nodes
7SimpleDatabaseConstantRecordSizeBPlusTreeBackendB+ Tree node size: 4096 bytes, node cache: 50 nodes
8SimpleDatabaseHeapBackend
9SimpleDatabaseBPlusTreeIndexBackend and HeapBackendB+ Tree node size: 4096 bytes
10SimpleDatabaseBPlusTreeIndexBackend and HeapBackendB+ Tree node size: 4096 bytes, node cache: 30 nodes
11LoggingTransactionalDatabaseConstantRecordSizeHeapBackend
12LoggingTransactionalDatabaseBPlusTreeIndexBackend and ConstantRecordSizeHeapBackendB+ Tree node size: 4096 bytes
13LoggingTransactionalDatabaseBPlusTreeIndexBackend and ConstantRecordSizeHeapBackendB+ Tree node size: 4096 bytes, node cache: 30 nodes
14LoggingTransactionalDatabaseConstantRecordSizeBPlusTreeBackendB+ Tree node size: 4096 bytes
15LoggingTransactionalDatabaseConstantRecordSizeBPlusTreeBackendB+ Tree node size: 4096 bytes, node cache: 30 nodes
16LoggingTransactionalDatabaseHeapBackend
17LoggingTransactionalDatabaseBPlusTreeIndexBackend and HeapBackendB+ Tree node size: 4096 bytes
18LoggingTransactionalDatabaseBPlusTreeIndexBackend and HeapBackendB+ Tree node size: 4096 bytes, node cache: 30 nodes
19ShadowCopyTransactionalDatabaseConstantRecordSizeHeapBackend
20ShadowCopyTransactionalDatabaseBPlusTreeIndexBackend and ConstantRecordSizeHeapBackendB+ Tree node size: 4096 bytes
21ShadowCopyTransactionalDatabaseBPlusTreeIndexBackend and ConstantRecordSizeHeapBackendB+ Tree node size: 4096 bytes, node cache: 30 nodes
22ShadowCopyTransactionalDatabaseConstantRecordSizeBPlusTreeBackendB+ Tree node size: 4096 bytes
23ShadowCopyTransactionalDatabaseConstantRecordSizeBPlusTreeBackendB+ Tree node size: 4096 bytes, node cache: 30 nodes
24ShadowCopyTransactionalDatabaseHeapBackend
25ShadowCopyTransactionalDatabaseBPlusTreeIndexBackend and HeapBackendB+ Tree node size: 4096 bytes
26ShadowCopyTransactionalDatabaseBPlusTreeIndexBackend and HeapBackendB+ 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.

nxy
50005
500105
500505
2001005
10050010
1001,00010
205,00050
1010,00050
150,000100
1100,000100
1500,000100
11,000,000100
15,000,000100

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.

SimpleDatabase, ConstantRecordSizeHeapBackend

SimpleDatabase, BPlusTreeIndexBackend and ConstantRecordSizeHeapBackend

B+ Tree node size = 4096 bytes, no LRU node cache

SimpleDatabase, BPlusTreeIndexBackend and ConstantRecordSizeHeapBackend

B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes

SimpleDatabase, ConstantRecordSizeBPlusTreeBackend

B+ Tree node size = 4096 bytes, no LRU node cache

SimpleDatabase, ConstantRecordSizeBPlusTreeBackend

B+ Tree node size = 4096 bytes, LRU node cache = 10 nodes

SimpleDatabase, ConstantRecordSizeBPlusTreeBackend

B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes

SimpleDatabase, ConstantRecordSizeBPlusTreeBackend

B+ Tree node size = 4096 bytes, LRU node cache = 50 nodes

SimpleDatabase, HeapBackend

SimpleDatabase, BPlusTreeIndexBackend and HeapBackend

B+ Tree node size = 4096 bytes, no LRU node cache

SimpleDatabase, BPlusTreeIndexBackend and HeapBackend

B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes

LoggingTransactionalDatabase, ConstantRecordSizeHeapBackend

LoggingTransactionalDatabase, BPlusTreeIndexBackend and ConstantRecordSizeHeapBackend

B+ Tree node size = 4096 bytes, no LRU node cache

LoggingTransactionalDatabase, BPlusTreeIndexBackend and ConstantRecordSizeHeapBackend

B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes

LoggingTransactionalDatabase, ConstantRecordSizeBPlusTreeBackend

B+ Tree node size = 4096 bytes, no LRU node cache

LoggingTransactionalDatabase, ConstantRecordSizeBPlusTreeBackend

B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes

LoggingTransactionalDatabase, HeapBackend

LoggingTransactionalDatabase, BPlusTreeIndexBackend and HeapBackend

B+ Tree node size = 4096 bytes, no LRU node cache

LoggingTransactionalDatabase, BPlusTreeIndexBackend and HeapBackend

B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes

ShadowCopyTransactionalDatabase, ConstantRecordSizeHeapBackend

ShadowCopyTransactionalDatabase, BPlusTreeIndexBackend and ConstantRecordSizeHeapBackend

B+ Tree node size = 4096 bytes, no LRU node cache

ShadowCopyTransactionalDatabase, BPlusTreeIndexBackend and ConstantRecordSizeHeapBackend

B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes

ShadowCopyTransactionalDatabase, ConstantRecordSizeBPlusTreeBackend

B+ Tree node size = 4096 bytes, no LRU node cache

ShadowCopyTransactionalDatabase, ConstantRecordSizeBPlusTreeBackend

B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes

ShadowCopyTransactionalDatabase, HeapBackend

ShadowCopyTransactionalDatabase, BPlusTreeIndexBackend and HeapBackend

B+ Tree node size = 4096 bytes, no LRU node cache

ShadowCopyTransactionalDatabase, BPlusTreeIndexBackend and HeapBackend

B+ Tree node size = 4096 bytes, LRU node cache = 30 nodes

Compare graphs




[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]