A simple (mostly-CPU) benchmark application which was developed as an individual project for the lab of the “algorithms and data structures” course. It aims at demonstrating the improvement in execution time of a given task when it is being parallelised.
As for the task, mergesort sorting algorithm was chosen, on a fixed-length randomized integer array, due to its ability to be heavily parallelized. To demonstrate the reduction in execution time, the application incorporates two modes of execution. The first one executes the task utilizing a single thread, although, due to JVM’s optimization it was observed that the workload was distributed between the physical CPU cores to an extent. The second mode divides the array into as many segments as the user requested, through the “CPU cores” preference, and then utilizes an equal number of threads to sort and merge these segments. The reduction in execution time is substantial by comparison with the single-thread mode, as it can also be seen by the screenshot taken on a PC with a dual core CPU. A basic GUI was also implemented for application’s ease of use.