Configure db4o to use the custom marshaller for the Item class:
1private static void ConfigureMarshaller(){ 2
marshaller = new ItemMarshaller(); 3
Db4oFactory.Configure().ObjectClass(typeof(Item)).MarshallWith(marshaller); 4
}
1Private Shared Sub ConfigureMarshaller() 2
marshaller = New ItemMarshaller 3
Db4oFactory.Configure.ObjectClass(GetType(Item)).MarshallWith(marshaller) 4
End Sub
01private static void StoreObjects(){ 02
File.Delete(DbFile); 03
IObjectContainer container = Db4oFactory.OpenFile(DbFile); 04
try { 05
Item item; 06
DateTime dt1 = DateTime.UtcNow; 07
for (int i = 0; i < 50000; i++){ 08
item = new Item(0xFFAF, 0xFFFFFFF, 120); 09
container.Set(item); 10
} 11
DateTime dt2 = DateTime.UtcNow; 12
TimeSpan diff = dt2 - dt1; 13
System.Console.WriteLine("Time to store the objects ="+ diff.Milliseconds + " ms"); 14
} finally { 15
container.Close(); 16
} 17
}
01private static void RetrieveObjects(){ 02
IObjectContainer container = Db4oFactory.OpenFile(DbFile); 03
try { 04
DateTime dt1 = DateTime.UtcNow; 05
IObjectSet result = container.Get(new Item()); 06
DateTime dt2 = DateTime.UtcNow; 07
TimeSpan diff = dt2 - dt1; 08
System.Console.WriteLine("Time elapsed for the query ="+ diff.Milliseconds + " ms"); 09
ListResult(result); 10
} finally { 11
container.Close(); 12
} 13
}
01Private Shared Sub StoreObjects() 02
File.Delete(DbFile) 03
Dim container As IObjectContainer = Db4oFactory.OpenFile(DbFile) 04
Try 05
Dim item As Item 06
Dim dt1 As DateTime = DateTime.UtcNow 07
Dim i As Integer = 0 08
While i < 500000 09
item = New Item(&HFFAF, &HFFFFFFA, 120) 10
container.Set(item) 11
System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1) 12
End While 13
Dim dt2 As DateTime = DateTime.UtcNow 14
Dim diff As TimeSpan = dt2 - dt1 15
System.Console.WriteLine("Time to store the objects =" + diff.Milliseconds.ToString() + " ms") 16
Finally 17
container.Close() 18
End Try 19
End Sub
01Private Shared Sub RetrieveObjects() 02
Dim container As IObjectContainer = Db4oFactory.OpenFile(DbFile) 03
Try 04
Dim dt1 As DateTime = DateTime.UtcNow 05
Dim result As IObjectSet = container.Get(New Item) 06
Dim dt2 As DateTime = DateTime.UtcNow 07
Dim diff As TimeSpan = dt2 - dt1 08
System.Console.WriteLine("Time elapsed for the query =" + diff.Milliseconds.ToString() + " ms") 09
ListResult(result) 10
Finally 11
container.Close() 12
End Try 13
End Sub
Custom marshallers can help you to
improve performance for selected classes if quering for fields is not required. The impact can be especially
noticeable on bulk operations. It is recommended to test the performance impact of a custom marshaller with your real application model.