 |
Performance data for SICStus Prolog |
Performance Summary
The SICStus Prolog compiler produces portable, optimized virtual
machine code.
The table below shows performance for some platforms on the standard
naive reverse benchmark (list of 30 elements, repeated 10000
times). The figures are in "Lips" (Logical Inferences Per Second). For
more details on the benchmark, see the Prolog
code.
Bytecode Lips (Naive Reverse)
The figures are sorted on Lips, descending values.
| Hardware |
OS |
SICStus version |
Compiler |
MLips |
| AMD Opteron 1600 MHz |
Linux glibc 2.3 |
4.0 |
GCC 4.0.1 |
14.6 |
| AMD Opteron 1600 MHz |
Linux glibc 2.3 |
3.12.7 |
GCC 4.0.1 |
12.1 |
| Intel Xeon 2600 MHz |
Linux glibc 2.3 |
4.0 |
GCC 4.0.1 |
21.6 |
| Intel Xeon 2600 MHz |
Linux glibc 2.3 |
3.12.7 |
GCC 4.0.1 |
20.7 |
| Intel Core Solo 1500 MHz |
Mac OS X 10.7.1 |
3.12.6 |
GCC 4.0.1 |
12.7 |
| Pentium 4 1700 MHz |
Windows 2000 |
3.8.5 |
MSVC 6.0 |
28.6 |
| PowerPC G4 1250 MHz |
Mac OS X 10.3.5 |
3.11.2 |
GCC 3.3 |
10.06 |
| Pentium III 600 MHz |
Linux 2.2.13 |
3.8.5 |
GCC 2.95.2 |
7.09 |
| Pentium III 450 MHz |
Windows NT 4.0 |
3.8.5 |
MSVC 6.0 |
6.35 |
| Power PC G4 500 MHz |
Mac OS X 10.1.3 |
3.9.1 |
GCC 2.95.2 |
5.57 |
| Pentium II 450 MHz |
Linux 2.2.12-20 |
3.8.2 |
GCC 2.95.2 |
5.00 |
| Pentium II 400 MHz |
FreeBSD 3.1 |
3.8.2 |
GCC 2.95.2 |
3.70 |
| Pentium III 450 MHz |
Windows NT 4.0 |
3.8.2 |
MSVC 6.0 |
3.37 |
| Alpha 21164 600 MHz |
Linux 2.0.30 |
3.7.1 |
GCC 2.x |
2.82 |
| PowerPC G3 266 MHz |
Mac OS X Server |
3.8 |
GCC 2.7.2.1 |
2.70 |
| Pentium II 266 MHz |
Windows NT 4.0 |
3.7.1 |
MSVC 5.0 |
1.95 |
| Sun UltraSPARC 248 MHz |
SunOS 5.7 |
3.8.2 |
GCC 2.95.2 |
1.88 |
| HP 9000/780 |
HP-UX 10.20 |
3.8.2 |
GCC 2.95.2 |
1.67 |
| MIPS R4400 195 MHz |
IRIX |
3.8.2 |
GCC 2.95.2 |
1.40 |
| Sun Ultra-1 167MHz |
SunOS 5.6 |
3.8.2 |
GCC 2.95.2 |
1.24 |
| AlphaStation 400 4/233 |
Digital UNIX V4.0 |
3.8.2 |
GCC 2.8.1 |
0.685 |
Other Prolog Benchmarks
Here are some numbers for benchmarks used in the Mercury project. This
list contains links to the sources of the benchmarks:
-
crypt
solves a cryptoarithmetic puzzle.
-
deriv
symbolically differentiates four functions of a single variable.
-
poly
symbolically raises 1+x+y+z to the tenth power.
-
primes
finds all primes up to 100.
-
qsort
quicksorts a list of 50 integers using difference lists.
-
queens
finds all safe placements of 9 queens on a 9x9 chessboard.
-
query
finds countries with approximately equal population density.
-
tak is
an artificial benchmark, originally written in Lisp; it is heavily recursive
and does lots of simple integer arithmetic.
The benchmarks use the following test harness:
Results
The benchmark results, in milliseconds per iteration,
are as follows:
| Hardware |
CPU speed (MHz) |
Operating System |
SICStus version |
crypt |
deriv |
poly |
primes |
qsort |
queens |
query |
tak |
| AMD Opteron |
1600 |
Linux glibc 2.3 |
4.0 |
1.82 |
0.015 |
5.64 |
0.1366 |
0.0711 |
31.48 |
0.36 |
11.42 |
| AMD Opteron |
1600 |
Linux glibc 2.3 |
3.12.7 |
2.22 |
0.0182 |
6.72 |
0.1607 |
0.0857 |
38.01 |
0.613 |
14.89 |
| Intel Xeon |
2600 |
Linux glibc 2.3 |
4.0 |
1.15 |
0.0103 |
3.46 |
0.0858 |
0.0441 |
14.02 |
0.226 |
5.94 |
| Intel Xeon |
2600 |
Linux glibc 2.3 |
3.12.7 |
1.16 |
0.0103 |
3.48 |
0.0776 |
0.0429 |
17.74 |
0.378 |
6.02 |
| Intel Core Solo |
1500 |
Mac OS X 10.7.1 |
3.12.6 |
1.30 |
0.014 |
4.72 |
0.116 |
0.070 |
28.5 |
0.364 |
10.9 |
| Pentium 4 |
1700 |
Windows 2000 |
3.8.2 |
2.58 |
0.012 |
5.08 |
0.111 |
0.059 |
24.8 |
0.344 |
8.30 |
| PowerPC G4 |
1250 |
Mac OS X 10.3.5 |
3.11.2 |
2.42 |
0.040 |
7.20 |
0.290 |
0.150 |
43.0 |
0.900 |
16.2 |
| Pentium III |
600 |
Linux |
3.8.2 |
4.50 |
0.040 |
14.0 |
0.290 |
0.160 |
71.2 |
1.19 |
26.3 |
| Pentium III |
450 |
Windows NT 4.0 |
3.8.5 |
5.23 |
0.040 |
17.4 |
0.323 |
0.190 |
94.1 |
1.30 |
31.2 |
| Power PC G4 |
500 |
Mac OS X 10.1.3 |
3.9.1 |
4.17 |
0.040 |
13.9 |
0.370 |
0.160 |
90.7 |
1.25 |
32.8 |
| Sun UltraSPARC |
248 |
Solaris 7 |
3.8.2 |
5.72 |
0.040 |
13.8 |
0.500 |
0.190 |
76.0 |
1.99 |
17.1 |
| PentiumPro |
233 |
Linux |
3.8.2 |
13.8 |
0.110 |
46.0 |
1.16 |
0.560 |
257 |
3.83 |
94.3 |
| MIPS R4400 |
250 |
IRIX 6.5 |
3.8.2 |
19.3 |
0.170 |
78.1 |
1.590 |
0.760 |
322 |
5.51 |
124 |
| HP 9000/780 |
n/a |
HP-UX 10.20 |
3.8.2 |
20.9 |
0.120 |
49.4 |
1.630 |
0.730 |
366 |
5.36 |
129 |
| AlphaStation 400 4/233 |
233 |
DU 4.0 |
3.8.2 |
46.7 |
0.310 |
119 |
3.980 |
1.43 |
579 |
12.4 |
262 |
Some CLPFD Benchmarks
We do not maintain benchmark figures for the finite domain constraint
solver, but the distribution comes with a number of demonstration
program and a benchmark harness for these. To run the harness and
view the performance figures, type the following:
| ?- load_files(library('clpfd/examples/bench')).
| ?- bench.
|