Raw Performance of Space operations in Java and .Net
The below benchmarks deal with the raw performance of basic space operations, i.e. read, write, take and notify. The first benchmark runs on a remote space where the space and client run on two separate machines. The second benchmark runs on an embedded space where the space and client co-exist within the same process.
In these tests we used DELL PowerEdge R740, Intel Xeon Processor E5-2620 CPU, 1G Network, 1K payload, Single operation, No special JVM tuning.
The results show that even a single remote space instance can be fairly scalable and handle large volume of requests/sec. Embedded space results show that collocations leads to a significant increase of throughput. This indicates that we can easily write the same application code for both remote and local operations and benefit from collocation implicitly without the need to go through complete different implementations.
.Net results on a remote scenario is fairly close to those of Java. In embedded mode we see a significant gain in performance as expected. However, the gain in .NET is lower than the gain in Java due to the fact that read and write operation requirements are not passed by copy or reference as with Java. .Net native local-cache provides more then 1M reads/sec, which is relatively close to native .Net operation. In a real life situation which each embedded update would need to go through replication for backup purposes, it is expected that the performance between Java and .Net will be very close.