Client/server performance is a bit slower than local performance. This is illustrated with the following test:
UpdatePerformanceBenchmark.cs: RunClientServerTest
private void RunClientServerTest()
{
System.Console.WriteLine("Update test: Client/Server environment");
int objectsToUpdate = 30;
Init();
Clean();
Open(ConfigureClientServer());
Store();
System.Console.WriteLine("Update " + objectsToUpdate + " of " +
_count + " objects locally:");
UpdateItems(objectsToUpdate);
Close();
InitForClientServer();
Clean();
Open(ConfigureClientServer());
Store();
System.Console.WriteLine("Update " + objectsToUpdate + " of " +
_count + " objects remotely:");
UpdateItems(objectsToUpdate);
Close();
}
UpdatePerformanceBenchmark.cs: InitForClientServer
private void InitForClientServer()
{
_count = 1000;
_depth = 90;
_isClientServer = true;
_host = "localhost";
}
UpdatePerformanceBenchmark.cs: Init
private void Init()
{
_count = 1000;
_depth = 90;
_isClientServer = false;
}
UpdatePerformanceBenchmark.cs: ConfigureClientServer
private IConfiguration ConfigureClientServer()
{
IConfiguration config = Db4oFactory.NewConfiguration();
config.ClientServer().SingleThreadedClient(true);
return config;
}
The results:
Update test: Client/Server environment
Store 90000 objects: 7935ms
Update 30 of 1000 objects locally:
Updated 30 items: 404ms
Store 90000 objects: 11421ms
Update 30 of 1000 objects remotely:
Updated 30 items: 436ms
You can see that the performance drop is quite insignificant in this case, however it can be much worse on slow or unreliable networks.
Download example code: