JavaEE and ASP.NET benchmarking (Bachelor's thesis)

project-thumbnail-2018-bachelors-benchmarking
Developed for Riga Technical University (RTU) in 2018
Tags: Java JavaEE C# ASP.NET Node.js JavaScript MySQL Linux

For my Bachelor's thesis, I created real world benchmarks for two popular technologies!

More information

I had been interested in software performance for quite a bit, especially in real world scenarios. I recall looking at The Computer Language Benchmarks Game and thinking that while one runtime might be faster than another, those results might change somewhat in real world scenarios - when you're doing lots of computational operations, or quite on the contrary, are waiting for data to be sent through the network.

What I did

Thus, for my thesis, I created an entire testing system around this idea - which would ask tests to be executed on remote servers and then would aggregate the time taken to process them. I calculated both how much time was needed for the actual processing on the server, as well as how much time was needed for transferring data through the network, for a given amount of data.

The tests themselves included everything from sending static text, doing stream operations on objects, sorting data, sorting data by object fields, doing cryptographic operations, serializing and deserializing deep and wide JSON structures and so on.

For languages to compare, I chose Java and C#, with the JavaEE and ASP.NET frameworks at the time, though I feel like the results might have different slightly, were I to instead pick something like Spring. Overall, however, the results were quite surprising - while there were outlier tests where one solution prevailed over the other, overall they were comparable in most cases and most of the time was actualyl spent during network I/O.

What I learnt

It won't always be the inherent performance that a certain runtime has or doesn't have, but also how you use it - using two different libraries within the same language and runtime might have vastly different performance outcomes, because of the underlying optimizations (or lack thereof) or algorithms in question. But in general: both Java and C# will probably serve you nicely in most cases.

Page rendered in: 0.01 seconds