Performance



Introduction

The performance of EveC has been evaluated by means of some standard and widely-adopted benchmarks. The testing approach consisted in executing both the Java version and the EveC version of a program, comparing the obtained performances both in terms of execution time and memory usage. All the benchmarks described here have been executed on the same machine with an Intel i5 processor, running on Linux kernel version 3.5.0-24-generic. The Java version utilized for testing performance is the OpenJDK 64-Bit Server VM 23.7-b01, supporting Java 1.7.0_13. The following sections present the obtained results: each benchmark has been run multiple times and the result shown for each benchmark is the mean of the results obtained for each run.

jByte

Java Grande Benchmark Assign

Java Grande Benchmark Create

As the chart shows, the result for this micro-benchmark are not so impressive: in fact, Java is extremely faster than EveC. The performance achieved by Java is due to the fact that it removes the main part of the allocations of which the benchmark is composed, realizing that the program is repeating the same allocation many times. For now, in EveC is not available such an optimization (Dead Code Elimination).

Java Grande Benchmark Arith

Java Grande Benchmark Math

As for the Math micro-Benchmark, it is important to notice that in the current implementation, the EveC version of the lang.Math class is only a wrapper to the mathematical library of the C standard library. Some functions, like the calculation of the maximum or the minimum of between two numbers, can be easily implemented with only one instruction, and the cost to call them is greater than the cost of their execution. Since, for now, any EveC application has no access to the source code of the lang.Math, just like of all the other EveC libraries, Method Inlining has no success for this benchmark. Moreover, also the optimizations performed by the GCC compiler would be more efficient if the libraries' source code were available. These results suggest a future in which the source code of the EveC libraries should be available to any application.

Java Grande Benchmark Method

Java Grande Benchmark Section 2

Simplex benchmark

The results of the Simplex benchmark are shown for different dimensions for the input data, and report the time (in milliseconds) necessary to find the optimal solution. It can be noted, here, that for small data, the JVM is not able to perform aggressive optimizations, while it seems to be more effective for bigger data.

Sorting Algorithms