[mercury-users] Is Mercury as fast as C?

Ralph Becket rbeck at microsoft.com
Fri Apr 20 21:20:12 AEST 2001


> I was impressed with the section "Determinism" in the manual. The
> ability of the compiler to know about the number of solutions in
> advance is a huge step forward from a blind interpreter chasing
> unification after unification without any expectations on the outcome
> of the search.

Just to be precise here, the compiler only checks for upper and lower
bounds (0, 1, some, any) on the number of solutions a predicate can 
have for a given mode.

> The question therefore arises: although it is well-known that Mercury
> is several times faster than any Prolog that has ever been written,
> does it solve problems that we have C programs for as fast as C? If
> not, why not?

I reimplemented a SPEC'95 benchmark doing memory-to-memory LZW
compression.
The program was less than 30% the size of the C code, far more readable,
and was less than 50% slower.  The best guess reason for the 50% penalty
is the current use of a conservative garbage collector; a native GC that
understood the types of the objects would have a negligible impact on
performance (a native GC exists, but there are issues to do with using
such
a thing with programs that link against code written in other
languages.)

In practice, however, you'll probably find that the difference between
Mercury and C on programs of any size is fairly small.  I wouldn't be at
all surprised to see Mercury outperform C++ and Java on several
benchmarks.

Cheers,

Ralph
--------------------------------------------------------------------------
mercury-users mailing list
post:  mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-users-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the users mailing list