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:


Quirks UVM benchmark results
Number CVS Quirks UVM Java VM
1 Fibonacci 1 2.15 sec 3.9 sec
2 Fibonacci 2 2.34 sec 20.5 sec
3 Fibonacci 1000 2.65 sec 2 min 1.0 sec
4 Factorial 13.7 sec 13.7 sec
5 Figured numbers 5.9 sec 9.6 sec
6 Ackermann 5.44 sec 5.44 sec
7 Hanoi 4.45 sec 7.14 sec
8 Bubble sort 3.74 sec 8.03 sec



  1. 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.
  2. The same algorithm, but now each Fibonacci number is a vector of 2 elements.
  3. The same with 1000 element vectors. Found the 100_000th element.
  4. 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.
  5. 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.
  6. 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).
  7. Infamous Hanoi towers. Moves 22 disks from one pivot to anther. It is also shows recursion speed as well as array access operations speed.
  8. Bubble sort. 10 times sort 1000 element array with reverse order of elements initially.

Back to home page


(web master)