Benchmarks results for Quirks 1.1d3
These benchmarks compare the performance of Quirks in relation
to Java VM. All results are gotten in interpreting modes (we
used jdk 1.3 and option -Xint with java). The
interpreting mode is not the primary mode of UVM (but it is only mode
which already works). The goal of Quirks code presentation is to give
best quality of JIT compiled code. Some methods of presentations which
are very good for quality native code generation are very hard for
interpretation. The goal of these benchmarks is to show that the
performance of Quirks interpreter is no less than that in Java.
Benchmarks 2 and 3 show the superiority of Quirks when process complex
data (vectors).
The table is organized such way, that the second column contains a
reference to the CVS archive of the benchmark sources (both in UVM
assembler and Java), the 3rd and the 4th columns show time of the code
execution on a test machine. The test machine has the following
parameters:
- PC
- OS - Linux
- UVM version - 1.1d2
- Compiler - gcc 2.95.2
- Processor - AMD K6-2+ 500 MHz
- RAM bus speed - 100MHz
- Java version - JDK 1.3
- The very simple benchmark which count the 10_000_000th Fibonacci
number by the formula: f[i] = f[i-2] + f[i-1] in a cycle.
- The same algorithm, but now each Fibonacci number is a vector of 2
elements.
- The same with 1000 element vectors. Found the 100_000th element.
- Recursive search a factorial: fact(N) = fact(N-1) *
N. Count fact(33) in a cycle 1_000_000 times. This test is focused
on the call / return / parameter passing speed.
- Found a sum of 10_000_000 first figured numbers. A figured number is a
number which can be found by the formula:
P(k, n) = n + (k - 2) * n * (n - 1) / 2.
- Ackermann function:
Ack (m, n) = (m == 0) ? (n + 1) : ((n == 0) ? Ack(m-1, 1) : Ack(m-1, Ack(m, n - 1))).
This bench count Ack (3, 9).
- Infamous Hanoi towers. Moves 22 disks from one pivot to
anther. It is also shows recursion speed as well as array access
operations speed.
- Bubble sort. 10 times sort 1000 element array with
reverse order of elements initially.