[LLVMdev] Impressive performance result for LLVM: complex arithmetic
Jon Harrop
jon at ffconsultancy.com
Thu Feb 26 13:07:35 PST 2009
Following a discussion about numerical performance on comp.lang.functional
recently I just tried running a simple C mandelbrot benchmark that uses C99's
complex arithmetic using gcc and llvm-gcc on a 2.1GHz Opteron 2352 running
Debian:
gcc: 5.727s
llvm-gcc: 1.393s
There is still 20% room for improvement but LLVM is >4x faster than gcc here.
Sweet.
Here's the code:
#include <stdio.h>
#include <stdlib.h>
#include <complex.h>
int max_i = 65536;
double sqr(double x) { return x*x; }
double cnorm2(complex z) { return sqr(creal(z)) + sqr(cimag(z)); }
int loop(complex c) {
complex z=c;
int i=1;
while (cnorm2(z) <= 4.0 && i++ < max_i)
z = z*z + c;
return i;
}
int main() {
for (int j = -39; j < 39; ++j) {
for (int i = -39; i < 39; ++i)
printf(loop(j/40.0-0.5 + i/40.0*I) > max_i ? "*" : " ");
printf("\n");
}
return 0;
}
--
Dr Jon Harrop, Flying Frog Consultancy Ltd.
http://www.ffconsultancy.com/?e
More information about the llvm-dev
mailing list